Что было. Из скрипта администратор выполняет Stop-Computer -ComputerName <адрес> -Force и Get-WmiObject Win32_ComputerSystem -ComputerName <адрес>. К одному серверу команды проходят, к другому, настроенному «так же», падают: The RPC server is unavailable. (Exception from HRESULT: 0x800706BA).
Причина (подтверждено). На проблемном сервере отсутствовали три предопределённых входящих правила брандмауэра, которые есть на работающем:
- «Удалённое управление файловым сервером (WMI-In)»: TCP, динамические порты RPC;
- «Удалённое управление файловым сервером (DCOM-In)»: TCP 135;
- «Удалённое управление файловым сервером (SMB-In)»: TCP 445.
После включения аналогичных правил (в обсуждении их экспортировали с рабочего сервера и импортировали) команды заработали.
Почему нужны все три. Классический WMI работает через DCOM: клиент обращается к сопоставителю конечных точек (135), получает динамический порт службы WMI и подключается к нему; часть операций требует SMB. Отсутствие любого из трёх даёт один и тот же 0x800706BA, поэтому диагностика по коду невозможна, только по правилам.
Как включить штатно, не копируя правила.
Enable-NetFirewallRule -DisplayGroup "Windows Management Instrumentation (WMI)"
Enable-NetFirewallRule -DisplayGroup "Remote Service Management"
Enable-NetFirewallRule -DisplayGroup "Remote Event Log Management"
Get-NetFirewallRule -DisplayGroup "Windows Management Instrumentation (WMI)" | Select DisplayName, Enabled, Profile
Проверить, что правила включены для того профиля сети, в котором находится сервер (домен/частная/общедоступная): правило, включённое только для доменного профиля, не сработает на сервере в рабочей группе. Область правила («удалённые адреса») ограничить адресами управляющих машин.
Лучше: перейти на WinRM. Stop-Computer и Get-CimInstance (замена Get-WmiObject) умеют работать через WinRM (-Protocol WSMan/CIM-сессии), где нужен один порт 5985 (или 5986 с TLS) и одно правило. Enable-PSRemoting -Force на сервере, Invoke-Command -ComputerName <сервер> { Stop-Computer -Force } с клиента. Для машин вне домена добавить TrustedHosts или использовать HTTPS-прослушиватель.
Диагностика «RPC недоступен» в общем виде: Test-NetConnection <сервер> -Port 135 (сопоставитель), -Port 445, службы RpcSs, RpcEptMapper, Winmgmt на целевой машине, разрешение имени в правильный адрес, права учётной записи (вне домена включить LocalAccountTokenFilterPolicy).
Удалённое подключение к WMI описано в документации Microsoft.