Сервер перехвата RPC недоступен Ошибка HRESULT: 0x800706BA - PullRequest
2 голосов
/ 11 ноября 2011

В powershell я могу отловить ошибку Access is Denied с помощью Catch [System.UnauthorizedAccessException].Как аналогичным образом перехватить ошибку RPC Server Unavailable?

Ответы [ 2 ]

4 голосов
/ 11 ноября 2012

Если вы добавите общий параметр -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
2 голосов
/ 18 ноября 2011

Вы можете поймать каждое исключение, которое вы хотите.Просто напишите:

$_.Exception.GetType()

внутри улова, чтобы увидеть, что там за исключение, а затем перехватите его.

...