Enter-PSSession: Выполнение удаленных команд в интерактивной оболочке

Enter-PSSession Команда позволяет установить постоянный интерактивный сеанс PowerShell на удаленном компьютере. Все команды, которые вы вводите в командной строке, выполняются на удаленном компьютере. В этой статье мы расскажем об основных возможностях Enter-PSSession и о том, как ее можно использовать для удаленного управления компьютерами под управлением Windows 10/11 и Windows Server 2022/2019/2016.

[Enter-PSSession Команда работает под управлением PowerShell Remoting стек. PSRemoting основан на Веб-сервисы для управления (WS-Management) и служба WinRM (Удаленное управление Windows). Трафик между компьютерами шифруется на уровне протокола (опционально можно включить SSL-шифрование для трафика PSRemoting WinRM). Вы можете использовать различные методы аутентификации, включая NTLM и Kerberos.

В простейшем случае для создания интерактивного сеанса PowerShell с удаленным компьютером необходимо указать только имя компьютера для подключения (параметр ComputerName опция). Чтобы подключиться к удаленному компьютеру, просто выполните команду:

Enter-PSSession hq-srv01.woshub.com

Команда Enter-PSSession позволяет выполнять команды в интерактивном сеансе с одним удаленным компьютером

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

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

Enter-PsSession –ComputerName hq-srv01.woshub.com –Credentials woshub\maxbak

Или:

$creds = Get-Credential
Enter-PSSession -ComputerName hq-srv01 -Credential $creds

Обратите внимание, что имя удаленного компьютера теперь отображается в квадратных скобках в начале приглашения PowerShell ([hq-srv01.woshub.com]). Таким образом, вы можете узнать, работаете ли вы в локальном или удаленном сеансе оболочки.

Вывод всех команд, выполняемых удаленно, отображается в вашей локальной консоли. Вы можете запустить hostname и убедиться, что вы выполняете ее на удаленном компьютере.

В этом интерактивном командном интерпретаторе можно выполнить любую команду (в соответствии с вашими привилегиями).

Например, давайте отобразим сетевые настройки Windows с помощью PowerShell:

Get-NetIPConfiguration

Вы можете изменить настройки DNS на удаленном компьютере:

Set-DNSClientServerAddress –InterfaceIndex 6 –ServerAddresses 192.168.13.4, 192.168.100.4

powershell remoting изменение настроек сетевого адаптера

Чтобы выйти из интерактивного сеанса удаленной оболочки, выполните команду Exit-PSSession или exit. Приглашение PS станет обычным, и вы вернетесь в локальную консоль PowerShell:

выход из удаленной интерактивной сессии powershell

Ранее администраторы в основном использовали PsExec инструмент для запуска интерактивной командной строки на удаленном компьютере с Windows. Однако с появлением Enter-PSSession необходимость в использовании внешних инструментов отпала.

В Windows Server 2016/2019/2022 функция PowerShell Remoting включена по умолчанию (ее можно увидеть в Server Manager -> Local Server -> Remote Management = Enabled).

удаленное управление winrm включено в Windows Server по умолчанию
В настольных версиях Windows (Win10, Win11) PSRemoting и WinRM отключены.
Вы можете проверить, включен ли PSRemoting на вашем текущем компьютере, используя команду ниже:

Get-PSSessionConfiguration

Эта команда также используется для получения списка пользователей и групп, которым разрешено подключение через WinRM. Чтобы использовать PSRemoting, учетная запись пользователя должна быть членом группы Администраторы или Пользователи удаленного управления группа. Вы можете узнать больше о том, как включить WinRM PowerShell Remoting для пользователей, не являющихся администраторами.

Get-PSSessionConfiguration - конфигурация сеанса

Вы можете проверить, можете ли вы подключиться к компьютеру локально через PowerShell Remoting:

Test-WSMan -ComputerName localhost

Если команда возвращает версию схемы WSMan, удаленные подключения к компьютеру с помощью PS Remoting разрешены.

Test-WSMan - проверка возможности подключения к wirm

Если PowerShell Remoting отключен или не настроен, появляется следующая ошибка:

Test-WSMan : <f:WSManFaultxmlns:f="http://schemas.microsoft.com/wbem/wsman/1/wsmanfault" Code="2150858770" Machine="srv02"><f: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".

Чтобы включить PowerShell Remoting, выполните эту команду:

Enable-PSRemoting -Force

Эта команда:

  • Включает службу WinRM и устанавливает тип ее запуска на Автоматический;
  • Создает точку подключения на порту WinRM по умолчанию (TCP/5985 для HTTP-трафика);
  • Добавляет исключения для WS-Management в брандмауэр Windows (если вы настраиваете PSRemoting вручную, добавьте правило брандмауэра с помощью PowerShell или GPO)
  • Разрешает удаленные сеансы PowerShell
  • Перезапускает службу WinRM

Убедитесь, что служба WinRM запущена и настроена на автоматический запуск:

Get-Service WinRM | Select MachineName,Name,Status, StartType

проверка службы winrm в windows

Команда Enable-PSRemoting работает только для доменных и частных сетевых профилей Windows. Если вы хотите включить PSRemoting на компьютере в общедоступной сети, измените расположение сети с Public на Private или используйте команду ниже:

Enable-PSRemoting -SkipNetworkProfileCheck -Force

В домене Active Directory самым простым способом централизованной настройки удаленного управления Windows (PSRemoting) на серверах и компьютерах является групповая политика.

Современные версии PowerShell (v6 или v7) поддерживают протокол Secure Shell (SSH) для подключения к удаленному компьютеру через PowerShell Remoting. Точка подключения SSH должна быть доступна на удаленном компьютере (Как включить встроенный сервер OpenSSH в Windows 10?). Вы можете запустить интерактивный сеанс PSRemoting через SSH с помощью этой команды:

Enter-PSSession -HostName [email protected]

Или аутентифицируйтесь по SSH с помощью ключа RSA:

Enter-PSSession -HostName [email protected]:22 -KeyFilePath c:\PS\max_rsa_key

Вы можете использовать Enter-PSSession вместе с New-PSSession:

$s = New-PSSession -ComputerName hq-srv01.woshub.com
Enter-PSSession -Session $s

Enter-PSSession поддерживает несколько методов аутентификации. Вы можете установить нужный вам метод с помощью параметра -Authentication. Поддерживаются методы аутентификации Basic, Digest, Kerberos, CredSSP, NegotiateWithImplicitCredential, Negotiate Challenge.

В примере выше мы показали, как создать интерактивное соединение Enter-PSSession между компьютерами в одном домене Windows (достаточно указать FQDN или короткое имя для соединения, используется аутентификация Kerberos). Если вы попытаетесь подключиться к удаленному компьютеру, используя его IP-адрес или CNAME, вы не пройдете проверку подлинности:

Enter-PSSession : Connecting to remote server 192.168.31.12 failed with the following error message: The WinRM client cannot process the request. Default authentication may be used with an IP address under the following conditions: the transport is HTTPS or the destination is in the TrustedHosts list, and explicit credentials are provided. Use winrm.cmd to configure TrustedHosts. Note that computers in the TrustedHosts list might not be authenticated.

Enter-PSSession по IP-адресу - клиент WinRM не может обработать запрос - используйте транспорт HTTPS или добавьте место назначения в список TrustedHosts

Чтобы подключиться к удаленному компьютеру, используя его IP-адрес, вы можете добавить его в список доверенных узлов (Trusted Hosts) или использовать SSL для WinRM (это более безопасно).

Чтобы добавить IP-адрес в список доверенных узлов, выполните следующую команду:

Set-Item WSMan:\localhost\Client\TrustedHosts -Value 192.168.13.5

Вы можете добавить доверенный хост с помощью маски подстановочных знаков:

Set-Item WSMan:\localhost\Client\TrustedHosts -Value *.woshub.com

Чтобы отобразить список доверенных хостов:

Get-Item WSMan:\localhost\Client\TrustedHosts

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

Перезапустите службу:

Restart-Service WinRM

Чтобы подключиться к удаленному компьютеру, используя его IP-адрес, выполните следующую команду:

Enter-PSSession -ComputerName 192.168.13.5 -Credential (Get-Credential -UserName woshub\maxbak)

[Enter-PSSession и New-PSSession Команды создают постоянный удаленный сеанс один на один и используются в основном в интерактивных сценариях. Если вы хотите автоматически запускать сценарии или задания или делать что-то на нескольких удаленных компьютерах одновременно, используйте команду Invoke-Command.

Добавить комментарий

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