3

在 powershell 中,我可以使用 Catch [System.UnauthorizedAccessException] 捕获 Access is Denied 错误。我如何同样捕获 RPC Server Unavailable 错误?

4

2 回答 2

5

如果您将通用参数 -ErrorAction Stop 添加到 get-wmiobject 命令,在我的例子中,它将导致命令将此非终止错误作为终止错误响应并将其丢弃以执行操作。

这是我为此目的使用的代码。我可能应该更具体地说明问题,但它现在有效。

# Is this machine on network?, if not, move to next machine
If (!(Test-Connection -ComputerName $computerName -Count 1 -Quiet)) { 
  Write-Host "$computerName not on network."
  Continue # Move to next computer
}

# Does the local Administrator account exist? Returns a string if it exists, which is true-ish.
try {

  $filter = "Name='$olduser' AND Domain='$computerName'"
  $account = Get-WmiObject Win32_UserAccount -Filter $filter -ComputerName $computerName -ErrorAction Stop

} catch {

  Write-Warning "$computerName Can't check for accounts, likely RPC server unavailable"
  Continue # Move to next computer

} #end try
于 2012-11-11T01:20:08.447 回答
4

你可以捕获你想要的每一个异常。写吧:

$_.Exception.GetType()

在你的catch里面看看有什么异常,然后捕捉它。

于 2011-11-18T12:27:39.030 回答