Хотите управлять ПК по PowerShell, а в ответ — ошибки WinRM? Сейчас включим службы, добавим исключения в брандмауэр, настроим доверенные хосты и разберём частые ошибки. Сделаем это безопасно и пошагово, без лишней теории.
WinRM/PowerShell Remoting не работает в Windows 10/11 — как включить и настроить (2025)
Коротко: что проверить сразу
- PowerShell запускайте от имени администратора.
- Обе машины видят друг друга по сети, пинг проходит, время синхронизировано.
- Служба «Windows Remote Management (WS-Management)» запущена и в автозапуске.
- Правила брандмауэра WinRM включены для нужного профиля сети.
1) Включаем WinRM и проверяем связь
PowerShell (Администратор) — выполнять по одной:
Enable-PSRemoting -Force
Get-Service WinRM | Set-Service -StartupType Automatic
Test-WSMan -ComputerName localhost
winrm enumerate winrm/config/listener
Команда Enable-PSRemoting сама создаст слушатель HTTP и откроет правила брандмауэра.
2) Рабочая группа: TrustedHosts и подключение
Без домена Kerberos не работает, поэтому добавьте адрес удалённой машины в доверенные хосты.
PowerShell (Администратор) — по одной строке:
Set-Item WSMan:\localhost\Client\TrustedHosts -Value "192.168.1.*" -Force
# Подключение с вводом учётных данных
Enter-PSSession -ComputerName 192.168.1.50 -Credential (Get-Credential)
# Одноразовая команда
Invoke-Command -ComputerName 192.168.1.50 -ScriptBlock { Get-ComputerInfo | Select-Object OSName, CsName }
Вместо маски можно перечислить хосты через запятую. Для массовых подключений используйте -ComputerName @(...).
3) HTTPS‑слушатель: безопасно для рабочих групп
Создадим самоподписанный сертификат и включим слушатель HTTPS. На клиентах нужно доверять этому сертификату.
PowerShell (Администратор) — вставить целиком:
$dns = (Get-CimInstance Win32_ComputerSystem).DNSHostName
$cert = New-SelfSignedCertificate -DnsName $dns -CertStoreLocation Cert:\LocalMachine\My -FriendlyName "WinRM HTTPS"
$thumb = $cert.Thumbprint
# Очищаем старые слушатели HTTPS
winrm delete winrm/config/Listener?Address=*+Transport=HTTPS 2>$null
# Создаём новый слушатель
winrm create winrm/config/Listener?Address=*+Transport=HTTPS "@{{Hostname=\"$dns\"; CertificateThumbprint=\"$thumb\"}}"
# Разрешаем брандмауэр
New-NetFirewallRule -DisplayName "WinRM HTTPS" -Direction Inbound -Protocol TCP -LocalPort 5986 -Action Allow
Подключение: Enter-PSSession -ComputerName ИМЯПК -UseSSL -Credential (Get-Credential).
4) Аутентификация и «double-hop»
- Домен: используйте Kerberos/Negotiate — работает «из коробки» при корректных SPN и времени.
- Второй переход: включите CredSSP или проксируйте команды через
Invoke-Commandс-Credential.
PowerShell (Администратор) — по одной строке (включение CredSSP):
Enable-WSManCredSSP -Role Client -DelegateComputer "*.domain.local" -Force
Enable-WSManCredSSP -Role Server -Force
5) Диагностика: где искать подсказки
PowerShell/Командная строка — по одной:
Test-WSMan -ComputerName 192.168.1.50
winrm quickconfig
wevtutil qe Microsoft-Windows-WinRM/Operational /c:20 /f:text /q:"*[System[(Level=2)]]"
Get-NetFirewallRule -DisplayName "*WinRM*" | Format-Table DisplayName, Enabled, Profile
Типичные ошибки: WinRM cannot complete the operation — время/имя не совпадают; The client cannot connect — брандмауэр/служба; 401 Unauthorized — аутентификация/доверие.
FAQ
Нужно ли открывать 5985/5986 наружу?
Нет, для локальной сети хватит стандартных правил брандмауэра. Наружу — только в исключительных корпоративных сценариях.
Команда Enable-PSRemoting зависает.
Отключите сторонний брандмауэр/«безопасники», затем включите правила для WinRM вручную и запустите службу.