PowerShell Remoting: удалённое управление серверами через WinRM
Windows Server
powershell-remoting-winrm-setup

PowerShell Remoting: полное руководство по удалённому управлению через WinRM

ЕС
Евгений Семёнов
Генеральный директор ООО АйТи Фреш · 15+ лет в IT
25 марта 2026 ~11 минут ООО АйТи Фреш

Заходить на каждый сервер через RDP — это, если честно, каменный век. Пять серверов ещё терпимо, а когда их двадцать пять? PowerShell Remoting через WinRM решает эту проблему радикально: одна команда — и вы работаете сразу на всех машинах, не вставая с кресла. Наши инженеры в АйТи Фреш используют этот инструмент каждый день — и на инфраструктурах клиентов, и в собственных задачах.

Случай из практики: Системный администратор одной торговой компании решил включить WinRM скриптом из интернета. Скрипт отключил аутентификацию Kerberos и включил Basic-аутентификацию с передачей паролей открытым текстом. Через неделю учётные записи утекли. Мы приехали на аварийный аудит и обнаружили компрометацию домена. Не копируйте скрипты вслепую!

Что такое PowerShell Remoting и зачем он нужен?

PowerShell Remoting — это удалённое выполнение команд поверх протокола WS-Management (WinRM). Грубо говоря, SSH для Windows. Только вместо текстового вывода вы получаете настоящие объекты PowerShell — их можно сразу фильтровать, сортировать, передавать дальше по конвейеру.

Как правильно включить WinRM на сервере?

# Проверяем статус WinRM
Get-Service WinRM

# Быстрая настройка (от администратора)
Enable-PSRemoting -Force

# Что делает Enable-PSRemoting:
# 1. Запускает службу WinRM
# 2. Ставит автозапуск
# 3. Создаёт HTTP listener на порту 5985
# 4. Создаёт правило в Windows Firewall
# 5. Регистрирует конфигурации сессий

Как настроить WinRM через групповые политики (GPO)?

В корпоративной среде мы почти всегда настраиваем WinRM централизованно через GPO — руками ходить по машинам никто не будет:

# Путь в GPO:
# Computer Configuration -> Policies -> Administrative Templates ->
# Windows Components -> Windows Remote Management (WinRM) -> WinRM Service
# 1. Allow remote server management through WinRM
#    IPv4 filter: конкретные подсети администраторов
# 2. Windows Remote Management (WS-Management) -> Automatic
# 3. Windows Firewall -> Windows Remote Management rule
Совет от наших инженеров: Всегда ограничивайте IPv4-фильтр WinRM конкретными подсетями. Не ставьте * — это открывает WinRM для всей сети.

Как настроить HTTPS для WinRM (порт 5986)?

# Создаём самоподписанный сертификат
$cert = New-SelfSignedCertificate -DnsName "server.company.ru"   -CertStoreLocation Cert:\LocalMachine\My

# Создаём HTTPS listener
New-WSManInstance -ResourceURI winrm/config/Listener   -SelectorSet @{Transport="HTTPS"; Address="*"}   -ValueSet @{CertificateThumbprint=$cert.Thumbprint}

# Открываем порт
New-NetFirewallRule -Name "WinRM-HTTPS" -DisplayName "WinRM HTTPS"   -Enabled True -Direction Inbound -Protocol TCP -LocalPort 5986

Как выполнять команды на нескольких серверах одновременно?

$servers = "SRV-DC01", "SRV-DC02", "SRV-FILE01", "SRV-SQL01"

Invoke-Command -ComputerName $servers -ScriptBlock {
    [PSCustomObject]@{
        Server = $env:COMPUTERNAME
        Uptime = (Get-CimInstance Win32_OperatingSystem).LastBootUpTime
        FreeRAM = [math]::Round((Get-CimInstance Win32_OperatingSystem).FreePhysicalMemory / 1MB, 1)
        DiskFree = [math]::Round((Get-PSDrive C).Free / 1GB, 1)
    }
} | Format-Table -AutoSize

Показательный случай из практики. Администратор клиента каждое утро тратил по 2 часа на обход 25 серверов через RDP — просто проверить, что всё живое. Мы написали скрипт мониторинга на PowerShell Remoting. Теперь та же проверка занимает 30 секунд.

Не рискуйте инфраструктурой

Доверьте настройку PowerShell Remoting профессионалам

Наши инженеры настроят всё быстро и надёжно. Более 15 лет опыта, работа с юрлицами, договор, SLA. Не тратьте время на эксперименты — звоните.

Как работает Just Enough Administration (JEA)?

JEA — это способ пустить человека в PowerShell Remoting, не давая ему лишнего. Указываете конкретный набор разрешённых команд — и больше ничего он не сделает, даже если захочет:

# Создаём файл ролей
New-PSRoleCapabilityFile -Path "C:\JEA\HelpDesk.psrc"   -VisibleCmdlets "Restart-Service", "Get-Service", "Get-Process"

# Конфигурация сессии
New-PSSessionConfigurationFile -Path "C:\JEA\HelpDesk.pssc"   -SessionType RestrictedRemoteServer -RunAsVirtualAccount   -RoleDefinitions @{"COMPANY\HelpDesk" = @{RoleCapabilities = "HelpDesk"}}

# Регистрируем
Register-PSSessionConfiguration -Name "HelpDesk" -Path "C:\JEA\HelpDesk.pssc" -Force

Как использовать SSH вместо WinRM в PowerShell 7?

# Установка OpenSSH Server
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
Start-Service sshd
Set-Service -Name sshd -StartupType Automatic

# Подключение через SSH
Enter-PSSession -HostName linux-srv01 -UserName admin -SSHTransport

Какие типичные ошибки при настройке WinRM?

Как решить проблему Double-Hop?

# Вариант 1: CredSSP
Enable-WSManCredSSP -Role Server -Force
Enable-WSManCredSSP -Role Client -DelegateComputer "srv-a.company.ru" -Force

# Вариант 2: Resource-Based Kerberos Delegation (рекомендуем)
Set-ADComputer -Identity "SRV-SQL01"   -PrincipalsAllowedToDelegateToAccount (Get-ADComputer "SRV-APP01")

Как мониторить и логировать PowerShell Remoting?

# GPO: Windows PowerShell
# 1. Turn on Module Logging -> *
# 2. Turn on PowerShell Script Block Logging -> Enable
# 3. Turn on PowerShell Transcription -> Enable

Get-WinEvent -LogName "Microsoft-Windows-WinRM/Operational" -MaxEvents 50

Когда обратиться к профессионалам?

Часто задаваемые вопросы

Что такое PowerShell Remoting?

PowerShell Remoting позволяет выполнять команды на удалённых серверах без графического интерфейса. Можно работать с десятками серверов одновременно.

Безопасен ли WinRM?

WinRM с Kerberos в домене безопасен. Не используйте Basic-аутентификацию и не ставьте TrustedHosts в *. Для внедоменных машин используйте HTTPS.

Какие порты использует WinRM?

HTTP — порт 5985, HTTPS — порт 5986. В домене по умолчанию HTTP с Kerberos-шифрованием.

Можно ли использовать Remoting для Linux?

Да, PowerShell 7 поддерживает Remoting через SSH. Установите OpenSSH и PowerShell 7 на Linux-сервер.

Что такое Double-Hop проблема?

Double-Hop — ограничение Kerberos при передаче учётных данных на второй удалённый сервер. Решается через CredSSP или Resource-Based Kerberos Delegation.

Нужна помощь специалистов?

ООО «АйТи Фреш» возьмёт это на себя

Не хватает времени или своих специалистов — мы настроим, оптимизируем и возьмём вашу IT-инфраструктуру на постоянное сопровождение. Работаем с юридическими лицами в Москве и регионах. Собственный дата-центр, команда из 8 серверов Dell Xeon Platinum 8280 на базе МТС.

15+лет опыта
25+клиентов
40Gсвоя сеть
24/7поддержка

Подпишитесь на рассылку ITfresh

Каждую неделю мы выпускаем практические гайды для руководителей IT и системных администраторов. Это не просто теория! Здесь вы найдёте всё: безопасность, 1С, миграции, резервные копии и проверенные лайфхаки из наших реальных проектов.

Реквизиты оператора персональных данных

ООО «АЙТИ-ФРЕШ», ИНН 7719418495, КПП 771901001. Юридический адрес: 105523, г. Москва, Щёлковское шоссе, д. 92, корп. 7. Контакт: info@itfresh.ru, +7 903 729-62-41. Оператор обрабатывает e-mail подписчика в целях рассылки информационных и рекламных материалов до момента отзыва согласия.