Обработка ошибок 0x800706BA - RPC-сервер не найден - PullRequest
0 голосов
/ 02 января 2019

Я написал скрипт для получения OSVersion из списка серверов. Некоторые серверы не отвечают на команду "Get-WmiObject".
Я хочу получить список всех имен хостов, где возникает эта ошибка.

Это дает мне список первых нескольких Серверов с этой ошибкой.
Когда первый Сервер отвечает без ошибок, сценарий останавливается.

Я хочу, чтобы скрипт ничего не делал и продолжал работать, когда Сервер не отправляет ошибку.

Кто-нибудь знает, как решить эту проблему.

Заранее спасибо.

Я попытался установить «-ErrorAction continue», но тогда весь скрипт не запустился.

Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Bypass -Force
$arraylist_OSInfo = New-Object System.Collections.ArrayList
$file=Get-Content -Path "C:\Temp\PS-Skripte\server2.txt"
foreach ($Hostname in $file)
 {
    try
    {
        Get-WmiObject Win32_OperatingSystem -ComputerName $Hostname -ErrorAction Stop
    }

    catch [Exception]
    {
        if ($_.Exception.GetType().Name -eq "COMException")
        {
          echo "$Hostname - RPC Error" | Out-File -FilePath "C:\temp\PS-Skripte\RPCerror.log" -Append -encoding unicode  
        }
    }
}

Я ожидаю получить список имен хостов со всех серверов, которые отправляют сообщение об ошибке:

"Get-WmiObject : Der RPC-Server ist nicht verfügbar. (Ausnahme von HRESULT: 0x800706BA)"

как ответ на командлет "Get-WmiObject"

1 Ответ

0 голосов
/ 02 января 2019

Я немного изменил ваш код

$hostnames = 'NoSuchmachine', 'DoesNotExist'

foreach ($hostname in $hostnames){

try {
  Get-WmiObject -Class win32_operatingsystem  -ComputerName $hostname  -ErrorAction Stop
}
catch {

if ($_.Exception.GetType().Name -eq "COMException") {
   out-file -FilePath c:\test\rpcError.txt -InputObject "$hostname - RPC Error" -Append -Encoding unicode

}
}

}

Содержимое файла

NoSuchmachine - RPC Error
DoesNotExist - RPC Error

То, что вы хотите, я думаю.

...