Как включить WinRM для PowerShell Remoting с помощью GPO?

В этой статье мы рассмотрим, как централизованно с помощью групповых политик включить и настроить на компьютерах домена службу Windows Remote Management (WinRM), позволяющую управлять удаленными рабочими станциями и серверами Windows через PowerShell Remoting (PSRemoting).

PowerShell Remoting позволяет удалённо подключаться к хостам Windows для запуска скриптов или отдельных PowerShell команд, включая полноценные интерактивные сессии. Это важный инструмент удаленного управления компьютерам, используемый системными администраторами и некоторым системным ПО.

Как вручную включить службу WinRM и PSRemoting в Windows?

Служба WinRM доступна всех версиях Windows, одна по умолчанию она включена только в серверных редакция (Windows Server) и отключена в десктопных версиях (Windows 10 и 11). Кроме того, в клиентских операционных системах отсутствует Windows слушатель службы WinRM listener и отключены правила Windows Firewall для доступа к сервису.

Проверить, включен ли WinRM на машине можно одной из следующих команд:

Test-WSMan

Или

WinRM enumerate winrm/config/listener

Появится ошибка, которая говорит, что служба WinRM не настроена:

WSManFault Message = The client cannot connect to the destination specified in the request. Verify that the service on the destination is running and is accepting requests. Consult the logs and documentation for the WS-Management service running on the destination, most commonly IIS or WinRM. If the destination is the WinRM service, run the following command on the destination to analyze and configure the WinRM service: "winrm quickconfig".
Error number: -2144108526 0x80338012

служба winrm не настроена в windows

Чтобы быстро включить службу WinRM в Windows, достаточно выполнить команду:

winrm quickconfig

или

Enable-PSRemoting –Force

WinRM has been updated to receive requests.
WinRM service type changed successfully.
WinRM service started.

включить WinRM вручную с помощью команды Enable-PSRemoting

Эта команда выполнит следующие действия:

  • Запустит службу WinRM и изменит тип запуска на автоматический
  • Создаст WinRM HTTP слушатель на хосте
  • Разрешит входящие подключения по WinRM (TCP порты 5985 и 5986) в Windows Firewall
В PowerShell Core 7.x в качестве транспорта WinRM протокола вместо портов HTTP (порт TCP/5985), HTTPS (порт TCP/5986) можно использовать SSH (TCP/22). См статью Удаленные подключения PowerShell Remoting через SSH. Это потребует настройки встроенного SSH сервера на Windows.

После этого удаленные пользователей могут подключаться к данному компьютеру через инструменты WinRM и использовать возможности удаленного управления через PowerShell Remoting.

Включаем WinRM и PSRemoting на компьютерах с помощью GPO

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

  1. Откройте консоль редактора Group Policy Management Console ( gpmc.msc ), выберите контейнер с компьютерами на которых вы хотите включить WinRM и создайте новую политику corpEnableWinRM; групповая политика для включения WinRM
  2. Откройте политику на редактирование;
  3. Перейдите в раздел Computer Configuration -> Policies -> Windows Settings -> Security Settings -> System Services. Найдите службу Windows Remote Service (WS-Management) и настройте ее на автоматический запуск; автоматический запуск службы winrm
  4. Теперь перейдите в раздел Computer Policies -> Preferences -> Control Panel Settings -> Services и выберите New -> Service. Укажите имя службы WinRM. Настройте следующие параметры

    Startup: No change
    Service action: Start service
    На вкладке Recovery задайте настройки автоматического перезапуска службы при падении:
    First failure: Restart
    Second failure: Restart
    Subsequent failures: Restart
    Restart service after: 1 минута
    настройка перезапуска службы winrm
  5. Перейдите в раздел Computer Configuration -> Policies -> Administrative Templates -> Windows Components -> Windows Remote Management (WinRM) -> WinRM Service. Включите параметр Allow remote server management through WinRM. В полях IPv4 и IPv6 фильтров можно указать подсети IP, на которых будет разрешено слушать WinRM listener (по сути, разрешенные IP, на которых будут создаваться слушатели на машинах). Если вы хотите разрешать принимать WinRM подключения на всех IP адресах (интерфейсах), оставьте здесь * . Если оставить поле в IPv6 пустым, это запретит подключение через IPv6 интерфейсы Allow remote server management through WinRM параметр для включения winrm
  6. Дополнительно в этом разделе GPO можно настроить следующие параметры безопасности:

    Allow unencrypted traffic: Disabled
    Disallow Kerberos authentication: Disabled
    Disallow Negotiate authentication: Disabled
    Disallow WinRM from storing RunAs credentials: Enabled
    Turn On Compatibility HTTP Listener: Disabled
    Turn On Compatibility HTTPS Listener: Disabled

    Настройки безопсноси службы WInRM в GPO
  7. Теперь нужно открыть правила в Windows Defender Firewall правила, разрешающие подключаться к WinRM по стандартным портам 5985 и 5986. Перейдите в Computer Configuration -> Policies -> Windows Settings -> Security Settings -> Windows Firewall with Advanced Security -> Windows Firewall with Advanced Security -> Inbound Rules. Выберите predefined rule Windows Remote Management. Укажите, что нужно разрешить входящее подключения по WinRM только для профилей Domain и Private сетей, но отключите для Public (подробнее о типах сетевых профилей в Windows). открыть правила для windows remote mahagement HTTP in в Windows Firewall
  8. Для дополнительной безопасности можно ограничить диапазон IP адресов, с которых компьютеры могут принимать подключения к WinRM, например локальной подсетью. Для этого откройте свойства правила файервола и на вкладке Scope добавить разрешенные IP и/или подсети. Ограничить подключение к службам winrm по IP адресу
  9. Перейдите в раздел Computer Configuration -> Policies -> Administrative Templates -> Windows Components -> Windows Remote Shell и включите параметр Allow Remote Shell Access. Allow Remote Shell Access
  10. Если вы планируете запускать через WinRM готовые PowerShell скрипты, нужно изменить настройки политики выполнения скриптов PowerShell: Computer Configuration -> Policies -> Administrative Templates -> Windows Components -> Windows PowerShell Включите политику Turn on Script Execution и выберите режим Allow local scripts and remote signed scripts. Это позволит запускать PS1 скрипты (по умолчанию запуск скриптов запрещен). GPO - разрешить запускать скрипты PowerShell через WinRM

Обновите настройки GPO на клиентских компьютерах и проверьте, что служба WinRM настроена автоматически. Для диагностики применения групповой политики на клиенте можно использовать утилиту gpresult.

Проверка настроек WinRM на клиентах

Чтобы проверить, что настройки WinRM на компьютере заданы через групповые политики, выполните команду:
winrm e winrm/config/listener

Команда выведет текущие настройки WinRM листенера. Обратите внимание на строку Listener [Source="GPO"] . Она означает, что настройки получены через групповые политики.

winrm e winrm/config/listener просмотр настроек winrm, служба настроена через GPO

Полную конфигурацию службы WinRM можно вывести с помощью команды:

winrm get winrm/config

Теперь нужно попробовать удаленно подключиться к компьютеру через WinRM. Запустите на удаленном компьютере консоль PowerShell с учетной записью с правами администратора на обоих компьютерах и выполните команду:

Test-WsMan YourCompName1

Если WinRM включен, появится такой ответ:

wsmid : http://schemas.dmtf.org/wbem/wsman/identity/1/wsmanidentity.xsd
ProtocolVersion : http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd
ProductVendor : Microsoft Corporation
ProductVersion : OS: 0.0.0 SP: 0.0 Stack: 3.0

Test-WsMan проверка службы winrm по сети

Проверить доступность порта 5985 на удаленном компьютере можно так:

Test-NetConnection -ComputerName YourCompName1 -Port 5985

Теперь можно попробовать выполнить интерактивное подключение к удаленному компьютеру через PSRemoting с помощью командлета Enter-PSSession:

Enter-PSSession CompNameHere1

удаленное подключение к компьютеру через WinRM с помощью Enter-PSsession

В данном случае подключение было успешно установлено и перед вами открылась консоль удаленного сервера.

По аналогии через PSRemoting на удаленном компьютере команду можно выполнить произвольную команду с помощью Invoke-Command:

Invoke-Command -ComputerName YourCompName1 -ScriptBlock {ipconfig /all}

Если соединение работает, вы увидите на экране вывод команды ipconfig .

Также можно выполнить команду на удаленном хосте так:

winrs -r:wsk-w10BO1 dir

В некоторых случаях при подключении через PSSession может появится ошибка:

Enter-PSSession : Connecting to remote server wsk-w10BO1 failed with the following error message : Access is denied.
CategoryInfo : InvalidArgument: (wsk-w10BO1:String) [Enter-PSSession], PSRemotingTransportException FullyQualifiedErrorId : CreateRemoteRunspaceFailed

В этом случае проверьте настройки разрешения для подключения к WinRM на удаленном компьютере:

Set-PSSessionConfiguration -ShowSecurityDescriptorUI -Name Microsoft.PowerShell

Убедитесь, что ваша учетная запись входит в группу Administrators или Remote Management Users (см. статью об удаленном доступе через WinRM без прав администратора) и им предоставлены права FullControl. Также проверьте, нет ли Deny правил.

настройка прав для удаленного подключения через winrm

Для настройки WinRM и PSRemoting в рабочей группе (без домена AD) рекомендуем использовать эту инструкцию.


Предыдущая статья Следующая статья


Комментариев: 9 Оставить комментарий

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Я не робот( Обязательно отметьте)