尝试使用 Powershell 从 AD 中删除大量计算机

尝试使用 Powershell 从 AD 中删除大量计算机

我有一个简单的任务要完成。我们正在淘汰很多旧机器,作为流程的一部分,我需要从 AD 中删除主机名。我从我们的库存系统中下载了要淘汰的系统列表(CSV 文件),我的目标是Powershell导入此列表,然后进行批量删除。

问题是,我们使用Bitlocker,因此我无法使用Remove-ADcomputer(给出叶子错误)。我尝试使用以下脚本Remove-ADOjbect,但没有成功。


    Import-Module ActiveDirectory
    $Computers = Import-CSV -LiteralPath C:\MIS\scripts\RemoveAD.csv
    foreach ($Computer in $Computers)
    {
    Get-ADComputer -Identity $Computers | Remove-ADobject -Recursive -Confirm:$false
    }

我之前从未使用 Powershell 编写过任何脚本,只是用命令来检索信息。任何帮助都非常感谢!

答案1

在本地主机上进行快速测试:

$env:COMPUTERNAME | 
 foreach {
 $TargetHost = $PSItem

 Try
 {
    "Processing hostname $PSItem"
    # Check Bitlocker state
    If (Get-BitLockerVolume | Where-Object VolumeStatus -eq 'FullyDecrypted' -ErrorAction Stop)
    {
        # Rest of your code here
        "$TargetHost is not encrypted"

    }
  }
 catch
 {
    # Drive encrypted - Catch errors here
    Write-Warning "$TargetHost is encrypted"
    $PSItem.Exception.Message
 }
}
# Results
<#
Processing hostname localhost
localhost is not encrypted
#>

我现在不在我的 ADDS 实验室中尝试这个,但是像这样简单的事情应该可以让你实现这个目标:

Import-Csv -Path 'C:\MIS\scripts\RemoveAD.csv' | 
 foreach {
 $TargetHost = Get-ADComputer -Identity $PSItem

 Try
 {
    "Processing hostname $PSItem"
    # Check Bitlocker state
    If (Get-BitLockerVolume | Where-Object VolumeStatus -eq 'FullyDecrypted' -ErrorAction Stop)
    {
        # Rest of your code here
        Remove-ADobject -Identity $TargetHost -WhatIf
    }
  }
 catch
 {
    # Drive encrypted - Catch errors here
    $PSItem.Exception.Message
    Remove-BitLockerKeyProtector -WhatIf
    Remove-ADobject -Identity $TargetHost -WhatIf
 }
}

相关内容