You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell删除Active Directory计算机对象脚本执行失败求助

排查并修复AD计算机对象删除PowerShell脚本问题

脚本存在的核心问题

  • 变量名拼写错误:脚本通过Read-Host将输入赋值给$Computer,但后续所有引用却用了$Computadora,导致变量为空,无法正确拼接LDAP路径。
  • 硬编码LDAP路径的风险:固定OU的DN拼接逻辑会导致如果目标计算机不在该OU下,Get-ADComputer直接抛出错误终止脚本,无法进入判断逻辑;同时AD中计算机对象的CN通常是计算机名+$(如PC01$),直接用输入的计算机名拼接CN会匹配不到对象。
  • 存在性判断逻辑错误:$rute.Contains($Computer)用法错误,Get-ADComputer返回的是ADComputer对象,Contains方法并非用于判断对象名称匹配,应直接判断对象是否非空或比对Name属性。
  • Remove-ADComputer语法错误:Identity参数开头缺少双引号,语法不合法,执行时会直接报错。

修正后的脚本

Import-Module ActiveDirectory
Clear-Host

# 获取用户输入的计算机名
$computerName = Read-Host "Type in the Host to Delete"

try {
    # 通过计算机名查找AD对象,无需硬编码OU,兼容任意位置的计算机
    $adComputer = Get-ADComputer -Identity $computerName -Server "DCKABI02.kabi.ads.fresenius.com" -ErrorAction Stop
    
    # 执行删除操作,直接使用找到的AD对象作为标识
    Remove-ADComputer -Identity $adComputer -Server "DCKABI02.kabi.ads.fresenius.com" -Confirm:$false
    Write-Host "The Computer '$computerName' exists and has been deleted" -ForegroundColor Green
}
catch [Microsoft.ActiveDirectory.Management.ADIdentityNotFoundException] {
    # 捕获对象不存在的异常
    Write-Host "The Host '$computerName' does not exist on AD" -ForegroundColor Red
}
catch {
    # 捕获其他异常(如权限不足、域控制器连接失败等)
    Write-Host "Error occurred: $_" -ForegroundColor Red
}

Start-Sleep -Seconds 5

修正说明

  1. 统一变量名,彻底解决拼写错误问题。
  2. 取消硬编码OU,直接通过计算机名查找AD对象,兼容目标计算机在任意OU的场景。
  3. 使用try/catch结构替代原有判断,更可靠处理AD操作中的各类异常(对象不存在、权限不足、连接问题等)。
  4. 删除操作直接复用查找得到的AD对象,避免手动拼接DN可能出现的错误。

内容的提问来源于stack exchange,提问作者Mikes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 16:25:21