域账户管理批量删除用户对象概述
如果删除单个账户,我们可以使用 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-ADObjec
t 删除对象命令,可以是账户、计算机、组织等;
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 条评论