域账户管理批量删除用户对象概述

如果删除单个账户,我们可以使用 Remove-ADUser -Identity zhangsan -Confirm:$false 命令执行,一般正常情况下可以成功执行,但是会有以下两种常见问题:

一、如果要同时删除 10 个或 100 个甚至更多账户,就不能一个一个执行;

二、如果账户还包含子树目录的场景下执行 Remove-ADUser 就会报错 Remove-ADUser : 目录服务只可以在一个页状对象上运行要求的操作。

Remove-ADUser : 目录服务只可以在一个页状对象上运行要求的操作。
所在位置 行:5 字符: 1
+ Remove-ADUser -Identity    test_del_myaccount    -Confirm:$false
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (test_del_myaccount:ADUser) [Remove-ADUser], ADException
    + FullyQualifiedErrorId : ActiveDirectoryServer:8213,Microsoft.ActiveDirectory.Management.Commands.RemoveADUser

经查微软 PowerShell 文档,删除子项(子树)需要使用如下删除域对象 Remove-ADObject 命令:
Remove-ADObject -Identity zhangsan -Recursive

通过导入 CSV 数据列表删除用户对象

import-csv .\del.csv | foreach{Get-ADUser -Identity $_.name} | foreach{Remove-ADObject -Identity $_.ObjectGUID -Recursive -Confirm:$False}

以上即是通过导入计划删除域账户的明细 csv 表格数据,经过两个循环执行命令来删除用户:

代码段一:导入账户明细

import-csv .\del.csv

指定路径或在当前目录下导入 CSV 表格数据 import-csv .\del.csv

注意:CSV 表格数据,成员列表需要使用 SamAccountName 属性;

代码段二:获取账户信息

foreach{Get-ADUser -Identity $_.name}

循环获取域账户信息;

-Identity $_.name 中的 name 需要与上述 CSV 表格数据成员列表表头对应;

Get-ADUser hexingxing


DistinguishedName : CN=何星星,OU=Admins,OU=IC,OU=InformationAndNewTechnologyDept.,OU=CN,OU=GlobalAdmin,DC=hxx,DC=tt
Enabled           : True
GivenName         : 星星
Name              : 何星星
ObjectClass       : user
ObjectGUID        : 68ba9331-c728-1100-b8b2-26b7948763b2
SamAccountName    : hexingxing
SID               : S-1-5-21-1306568705-3882769175-3968532009-9238
Surname           : 何
UserPrincipalName : hexingxing@hxx.tt

代码段三:删除用户对象

foreach{Remove-ADObject -Identity $_.ObjectGUID -Recursive -Confirm:$False}

1. Remove-ADObject 删除对象命令,可以是账户、计算机、组织等;

2. -Identity $_.ObjectGUID 指定以对象的 GUID 来查询账户并删除,根据微软 PowerShell 文档 Remove-ADObject 命令的运用规则,其中 ObjectGUID 也可以替换为 DN(CN=AmyAl-LPTOP,CN=Computers,DC=FABRIKAM,DC=COM) 名称 来使用,

3. -Recursive 循环删除账户及子项,即解决使用 Remove-ADUser 报错【Remove-ADUser : 目录服务只可以在一个页状对象上运行要求的操作。】;

4. -Confirm:$False 不需要确认,直接执行。

通过 SAM 账户名删除属于子项/子集/子树的用户对象

如果需求是只要删除一个用户,但是用户还有子项/子集/子树,使用 Remove-ADUser 还是不能直接删除,根据以上的实例,我们可以使用以上完整代码中的后两个部分即可,即使用 Get-ADUser 来获取用户信息,再使用 Remove-ADObject 获取用户 ObjectGUID 定位精确用户以删除。

Get-ADUser -Identity zhangsan | foreach{Remove-ADObject -Identity $_.ObjectGUID -Recursive -Confirm:$False}

通过搜索并删除指定组织单位(OU)容器内的用户对象

Get-ADUser -Filter * -SearchBase "OU=cnList,OU=testGroup,DC=hxx,DC=tt" | foreach{Remove-ADObject -Identity $_.ObjectGUID -Recursive -Confirm:$False}


0 条评论

发表回复

Avatar placeholder

您的电子邮箱地址不会被公开。