无法弄清楚如何使用 power shell 从 AD 中删除特定计算机。到处都找不到解决办法

问题描述 投票:0回答:1

大多数计算机都可以毫无问题地删除。但有些会显示有关叶对象的错误消息。

我试过这个:

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 中的计算机上也未启用“防止意外删除”选项。我在网上到处都看到这个问题,但没有解决方案。

powershell scripting active-directory
1个回答
0
投票

也许这种方法有效,“访问被拒绝”异常很可能是因为您有权删除计算机,但计算机具有受保护的叶对象(即: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
© www.soinside.com 2019 - 2024. All rights reserved.