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

PowerShell脚本获取AD服务器管理员:离线设备RPC错误捕获问题

解决PowerShell中RPC服务器不可用错误无法被try/catch捕获的问题

问题原因

Get-WmiObject抛出的「RPC服务器不可用」属于非终止错误,而PowerShell默认的try/catch仅会捕获终止错误,因此你的try/catch块无法拦截该错误,导致错误信息直接输出,破坏结果格式。

解决方案1:修改现有WMI脚本,强制转换错误类型

给Get-WmiObject添加-ErrorAction Stop参数,将非终止错误强制转为终止错误,让try/catch能够捕获。修改后的脚本如下:

$computers = Get-ADComputer -Filter {OperatingSystem -like "*Server*"} -SearchBase "OU=NAME,DC=domain,DC=com"
foreach ($computer in $computers) {
    try {
        $admins = Get-WmiObject -Class Win32_GroupUser -ComputerName $computer.Name `
            -Filter "GroupComponent=`"Win32_Group.Domain='$($computer.Name)',Name='Administrators'`"" `
            -ErrorAction Stop `  # 新增参数,强制转为终止错误
            | Select-Object -ExpandProperty PartComponent `
            | ForEach-Object { $_.substring($_.lastindexof('=')+1).replace('"','') }
        Write-Output "$($computer.Name): $($admins -join ', ')"
    } catch {
        Write-Output "$($computer.Name): RPC服务器不可用。"
    }
}

解决方案2:改用更现代的Get-CimInstance(推荐)

WMI系列cmdlet已被CIM系列取代,Get-CimInstance的错误处理更灵活,同样通过-ErrorAction Stop参数即可让try/catch捕获错误,代码如下:

$computers = Get-ADComputer -Filter {OperatingSystem -like "*Server*"} -SearchBase "OU=NAME,DC=domain,DC=com"
foreach ($computer in $computers) {
    try {
        $admins = Get-CimInstance -ClassName Win32_GroupUser -ComputerName $computer.Name `
            -Filter "GroupComponent=`"Win32_Group.Domain='$($computer.Name)',Name='Administrators'`"" `
            -ErrorAction Stop `
            | Select-Object -ExpandProperty PartComponent `
            | ForEach-Object { $_.substring($_.lastindexof('=')+1).replace('"','') }
        Write-Output "$($computer.Name): $($admins -join ', ')"
    } catch {
        Write-Output "$($computer.Name): RPC服务器不可用。"
    }
}

效果验证

修改后,离线设备会严格按照你期望的格式输出结果,不会再出现杂乱的错误堆栈信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 11:23:00