大多数计算机都可以毫无问题地删除。但有些会显示有关叶对象的错误消息。
我试过这个:
Get-ADComputer -Identity "ExamplePC" | Remove-ADComputer -Server "DomainController" -Confirm:$False
收到错误:
Remove-ADComputer : The directory service can perform the requested operation only on a leaf object
所以在阅读了这个问题后,我尝试:
Get-ADComputer "ExamplePC" | Remove-ADObject -Recursive
这给了我一个错误:
Remove-ADObject : Access is denied
仅供参考:我确实有权删除计算机。我是域管理员,如果我打开 Active Directory 管理中心,我可以手动删除计算机,不会出现任何问题。此外,我运行脚本的大多数计算机不会给我带来任何问题。我可以在脚本中更改或实施任何内容来解决此问题吗? AD 中的计算机上也未启用“防止意外删除”选项。我在网上到处都看到这个问题,但没有解决方案。
也许这种方法有效,“访问被拒绝”异常很可能是因为您有权删除计算机,但计算机具有受保护的叶对象(即:BitLocker),理想情况下
-Recursive
应该有效,但似乎不起作用就这样吧。值得赞扬的地方,Ansible 就是采用这种方法来解决 _ADObject.psm1#L1162-L1171
中的此错误。
# get the computer
$adObject = Get-ADComputer 'ExamplePC'
$getADObjectSplat = @{
Filter = '*'
Properties = 'ProtectedFromAccidentalDeletion'
Searchbase = $adObject.DistinguishedName
}
# get all leaf objects for this computer
Get-ADObject @getADObjectSplat |
Sort-Object -Property { $_.DistinguishedName.Length } -Descending |
ForEach-Object {
# if the leaf object is protected
if ($_.ProtectedFromAccidentalDeletion) {
# set ProtectedFromAccidentalDeletion to `$false`
$_ | Set-ADObject -ProtectedFromAccidentalDeletion $false -Confirm:$false
}
# remove the leaf object
$_ | Remove-ADObject -Confirm:$false
}
# remove the computer
$adObject | Remove-ADObject -Confirm:$false