2015-12-16 2 views
1

резюме Проблемы:WinRM - Сервер RPC Unavailable - может телнет и запущены службы

Я пытаюсь проверить WMF4 на все сервера в определенном OU в нашем домене. Тем не менее, я получаю ошибки RPC для большинства серверов, несмотря на наличие объектов групповой политики, позволяющих WinRM работать. Я запускаю код ниже с контроллера домена.

Вещи я проверил или пытавшиеся:

  1. Telnet от постоянного тока до целевого сервера на порт 135 и 5985. Работает отлично, поэтому брандмауэр (ы) не должно быть проблемой.
  2. Проверено, что следующие службы запущены на целевом сервере:
    • WinRM
    • Remote Registry
    • Remote Procedure Call
  3. Набор WinRM доверенных хостов на целевом сервере, чтобы "*" (точно так же, как тест)

Одна вещь, представляющая интерес - Существует один сервер, на котором я не получаю ошибку RPC, и она единственная в OU, которая находится в той же подсети 24, что и DC. Кажется, это любопытное совпадение.

Что я пропустил?

Спасибо.

Вот мой Powershell код:

Import-Module ActiveDirectory 
$searchOU = "<removed>" 
$2008servers=(Get-ADComputer -Filter {OperatingSystemVersion -like "6.0*" -or OperatingSystemVersion -like "6.1*"} -SearchBase $searchOU) 
$2012servers=(Get-ADComputer -Filter {OperatingSystemVersion -like "6.2*"} -SearchBase $searchOU) 
ForEach ($2008server in $2008servers) { 
    $server = $2008server.Name 
    try { 
     if (Get-HotFix -id KB2819745 -ComputerName $server -ErrorAction Stop) { 
     Add-Content "WMF4 is present on $server" -Path "C:\Users\`$peterb\Desktop\WMF4-Present.log" 
     } 
    } 
    catch { 
     if ($Error[0].Exception.Message.Contains("The RPC server is unavailable")) { 
     $ErrorMessage = $_.Exception.Message 
     Add-Content "$ErrorMessage on $server" -Path "C:\Users\`$peterb\Desktop\RPCUnavailable.log" 
     } else { 
      if ($Error[0].Exception.Message.Contains("Cannot find the requested hotfix")) { 
      Add-Content "WMF4 is missing on $server" -Path "C:\Users\`$peterb\Desktop\Missing-WMF4.log" 
      } else { 
       Add-Content "$ErrorMessage on $server" -Path "C:\Users\`$peterb\Desktop\OtherErrors.log" 
       } 
     } 
    } 
} 
ForEach ($2012server in $2012servers) { 
    $server = $2012server.Name 
    try { 
     if (Get-HotFix -id KB2799888 -ComputerName $server -ErrorAction Stop) { 
     Add-Content "WMF4 is present on $server" -Path "C:\Users\`$peterb\Desktop\WMF4-Present.log" 
     } 
    } 
    catch{ 
     if ($Error[0].Exception.Message.Contains("The RPC server is unavailable")) { 
     $ErrorMessage = $_.Exception.Message 
     Add-Content "$ErrorMessage on $server" -Path "C:\Users\`$peterb\Desktop\RPCUnavailable.log" 
     } else { 
     Add-Content "WMF4 is missing on $server" -Path "C:\Users\`$peterb\Desktop\Missing-WMF4.log" 
     } 
    } 
} 
+0

Если бы мой сетевой администратор наблюдал за брандмауэром, когда я делал простую команду Get-WmiObject, и похоже, что высокий диапазон портов, используемый RPC, блокируется брандмауэром. Я думаю, что я запутался в различиях портов между WinRM и портами, используемыми командами powershell. Полагаю, мне придется делать больше исследований. –

ответ

0

я обычно получаю ошибки RPC в PS когда WMI либо блокируется брандмауэром или если услуга не работает. Если я не ошибаюсь, get-hotfix использует WMI вместо WinRM для удаленного компьютера. Запуск службы WMI и создание правил брандмауэра, позволяющих WMI разрешать ошибки RPC.