Поделиться через


Enable-PSRemoting

Настраивает компьютер для получения удаленных команд.

Синтаксис

Enable-PSRemoting
      [-Force]
      [-SkipNetworkProfileCheck]
      [-WhatIf]
      [-Confirm]
      [<CommonParameters>]

Описание

Этот командлет доступен только на платформе Windows.

Командлет Enable-PSRemoting настраивает компьютер для получения удаленных команд PowerShell, отправляемых с помощью технологии WS-Management. WS-Management удаленное управление PowerShell в настоящее время поддерживается только на платформе Windows.

PowerShell удаленное управление активировано по умолчанию на платформах Windows Server. Вы можете использовать Enable-PSRemoting для включения удаленного взаимодействия PowerShell в других поддерживаемых версиях Windows и повторного включения удаленного взаимодействия при отключении.

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

Включение удаленного взаимодействия PowerShell в клиентских версиях Windows, если компьютер находится в общедоступной сети, обычно запрещено, но это ограничение можно обойти с помощью параметра SkipNetworkProfileCheck. Дополнительные сведения см. в описании параметра SkipNetworkProfileCheck.

Несколько установок PowerShell могут существовать параллельно на одном компьютере. При выполнении Enable-PSRemoting настраивается конечная точка удаленного взаимодействия для конкретной версии установки, в которой вы выполняете командлет. Таким образом, если во время работы PowerShell 6.2 выполняется Enable-PSRemoting, будет настроена точка взаимодействия удаленного доступа, которая также запускает PowerShell 6.2. При запуске Enable-PSRemoting в PowerShell 7-preview будет настроена конечная точка удаленного взаимодействия, работающая с PowerShell 7-preview.

Enable-PSRemoting при необходимости создает две конфигурации конечных точек удаленного взаимодействия. Если конфигурации конечных точек уже существуют, они просто должны быть включены. Созданные конфигурации идентичны, но имеют разные имена. У него будет простое имя, соответствующее версии PowerShell, на котором размещен сеанс. Другое имя конфигурации содержит более подробные сведения о версии PowerShell, в которой размещается сеанс. Например, при запуске Enable-PSRemoting в PowerShell 6.2 вы получите две настроенные конечные точки с именем PowerShell.6, PowerShell.6.2.2. Это позволяет создать подключение к последней версии узла PowerShell 6 с помощью простого имени PowerShell.6. Кроме того, вы можете подключиться к определенной версии узла PowerShell с помощью более длинного имени PowerShell.6.2.2.

Чтобы использовать вновь включенные конечные точки удаленного взаимодействия, необходимо указать их по имени с параметром ConfigurationName при создании удаленного подключения с помощью командлетов Invoke-Command,New-PSSession,Enter-PSSession. Дополнительные сведения см. в примере 4.

Командлет Enable-PSRemoting выполняет следующие операции:

  • Запускает командлет Set-WSManQuickConfig, который выполняет следующие задачи:
    • Запускает службу WinRM.
    • Задает тип запуска службы WinRM в значение "Автоматически".
    • Создает прослушиватель для приема запросов на любой IP-адрес.
    • Включает исключение брандмауэра для коммуникаций WS-Management.
    • Создает конфигурации конечных точек сеанса с простыми и расширенными именами при необходимости.
    • Включает все конфигурации сеанса.
    • Изменяет дескриптор безопасности всех конфигураций сеансов, чтобы разрешить удаленный доступ.
  • Перезапускает службу WinRM, чтобы внести предыдущие изменения в силу.

Чтобы запустить этот командлет на платформе Windows, запустите PowerShell с помощью параметра "Запуск от имени администратора". Этот командлет недоступен в версиях PowerShell для Linux или macOS.

Осторожность

Этот командлет не влияет на конфигурации удаленных конечных точек, созданные Windows PowerShell. Это влияет только на конечные точки, созданные с помощью PowerShell версии 6 и более поздних версий. Чтобы включить и отключить конечные точки удаленного взаимодействия PowerShell, управляемые Windows PowerShell, запустите командлет Enable-PSRemoting из сеанса Windows PowerShell.

Дополнительные сведения об использовании удаленного взаимодействия PowerShell можно найти в следующих статьях:

Примеры

Пример 1. Настройка компьютера для получения удаленных команд

Эта команда настраивает компьютер для получения удаленных команд.

Enable-PSRemoting

WARNING: PowerShell remoting has been enabled only for PowerShell Core configurations and
does not affect Windows PowerShell remoting configurations. Run this cmdlet in Windows
PowerShell to affect all PowerShell remoting configurations.

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

Эта команда настраивает компьютер для получения удаленных команд. Параметр Force подавляет запросы пользователя.

Enable-PSRemoting -Force

WARNING: PowerShell remoting has been enabled only for PowerShell Core configurations and
does not affect Windows PowerShell remoting configurations. Run this cmdlet in Windows
PowerShell to affect all PowerShell remoting configurations.

Пример 3. Разрешение удаленного доступа на клиентах

В этом примере показано, как разрешить удаленный доступ из общедоступных сетей в клиентских версиях операционной системы Windows. Имя правила брандмауэра может отличаться для разных версий Windows. Используйте Get-NetFirewallRule для просмотра списка правил. Перед включением правила брандмауэра просмотрите параметры безопасности в правиле, чтобы убедиться, что конфигурация подходит для вашей среды.

Get-NetFirewallRule -Name 'WINRM*' | Select-Object -Property Name

Name
----
WINRM-HTTP-In-TCP-NoScope
WINRM-HTTP-In-TCP
WINRM-HTTP-Compat-In-TCP-NoScope
WINRM-HTTP-Compat-In-TCP

Enable-PSRemoting -SkipNetworkProfileCheck -Force
Set-NetFirewallRule -Name 'WINRM-HTTP-In-TCP' -RemoteAddress Any

По умолчанию Enable-PSRemoting создает правила сети, разрешающие удаленный доступ из частных и доменных сетей. Команда использует параметр SkipNetworkProfileCheck, чтобы разрешить удаленный доступ из общедоступных сетей в одной локальной подсети. Команда устанавливает параметр Force для подавления сообщений подтверждения.

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

Командлет Set-NetFirewallRule в модуле NetSecurity добавляет правило брандмауэра, которое разрешает удаленный доступ из общедоступных сетей из любого удаленного расположения. Это включает узлы в разных подсетях.

Пример 4. Создание сеанса удаленного доступа к новоактивированной конфигурации конечной точки

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

Первая команда включает удаленное управление PowerShell на компьютере.

Вторая команда перечисляет конфигурации конечных точек.

Третья команда создает удаленный сеанс PowerShell на том же компьютере, указав конечную точку PowerShell.7 по имени. Удаленный сеанс будет проведен с использованием последней версии PowerShell 7 (7.3.0).

Последняя команда обращается к переменной $PSVersionTable в удаленном сеансе, чтобы отобразить версию PowerShell, в которой размещен сеанс.

Enable-PSRemoting -Force

Get-PSSessionConfiguration

$session = New-PSSession -ComputerName localhost -ConfigurationName PowerShell.7

Invoke-Command -Session $session -ScriptBlock { $PSVersionTable }

WARNING: PowerShell remoting has been enabled only for PowerShell Core configurations and
does not affect Windows PowerShell remoting configurations. Run this cmdlet in Windows
PowerShell to affect all PowerShell remoting configurations.

Name          : PowerShell.7
PSVersion     : 7.3
StartupScript :
RunAsUser     :
Permission    : NT AUTHORITY\INTERACTIVE AccessAllowed,
                BUILTIN\Administrators AccessAllowed,
                BUILTIN\Remote Management Users AccessAllowed

Name          : PowerShell.7.3.0
PSVersion     : 7.3
StartupScript :
RunAsUser     :
Permission    : NT AUTHORITY\INTERACTIVE AccessAllowed,
                BUILTIN\Administrators AccessAllowed,
                BUILTIN\Remote Management Users AccessAllowed

Name                           Value
----                           -----
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0…}
PSEdition                      Core
PSRemotingProtocolVersion      2.3
Platform                       Win32NT
SerializationVersion           1.1.0.1
GitCommitId                    6.2.2
WSManStackVersion              3.0
PSVersion                      6.2.2
OS                             Microsoft Windows 10.0.18363

Заметка

Имя правила брандмауэра может отличаться в зависимости от версии Windows. Используйте командлет Get-NetFirewallRule для перечисления имен правил в системе.

Параметры

-Confirm

Запрашивает подтверждение перед запуском командлета.

Тип:SwitchParameter
Aliases:cf
Position:Named
Default value:False
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-Force

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

Тип:SwitchParameter
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-SkipNetworkProfileCheck

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

Этот параметр не влияет на версии сервера операционной системы Windows, которая по умолчанию имеет правило брандмауэра локальной подсети для общедоступных сетей. Если правило брандмауэра локальной подсети отключено в версии сервера, Enable-PSRemoting повторно включает его независимо от значения этого параметра.

Чтобы удалить ограничение локальной подсети и включить удаленный доступ из всех расположений в общедоступных сетях, используйте командлет Set-NetFirewallRule в модуле NetSecurity.

Этот параметр появился в PowerShell 3.0.

Тип:SwitchParameter
Position:Named
Default value:None
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

-WhatIf

Показывает, что произойдет, если командлет будет выполнен. Командлет не выполняется.

Тип:SwitchParameter
Aliases:wi
Position:Named
Default value:False
Обязательно:False
Принять входные данные конвейера:False
Принять подстановочные знаки:False

Входные данные

None

Невозможно передать объекты в этот командлет.

Выходные данные

String

Этот командлет возвращает строки, описывающие результаты.

Примечания

Этот командлет доступен только на платформах Windows.

В версиях операционной системы Windows Enable-PSRemoting создает правила брандмауэра для частных и доменных сетей, которые разрешают удаленный доступ, и создает правило брандмауэра для общедоступных сетей, которое разрешает удаленный доступ только с компьютеров в одной локальной подсети.

В клиентских версиях операционной системы Windows Enable-PSRemoting создает правила брандмауэра для частных и доменных сетей, которые разрешают неограниченный удаленный доступ. Чтобы создать правило брандмауэра для общедоступных сетей, разрешающих удаленный доступ из одной локальной подсети, используйте параметр SkipNetworkProfileCheck.

В клиентских или серверных версиях операционной системы Windows для создания правила брандмауэра для общедоступных сетей, которые удаляют ограничение локальной подсети и разрешают удаленный доступ, используйте командлет Set-NetFirewallRule в модуле NetSecurity, чтобы выполнить следующую команду: Set-NetFirewallRule -Name "WINRM-HTTP-In-TCP-PUBLIC" -RemoteAddress Any

Enable-PSRemoting включает все конфигурации сеансов, задав значение свойства Включено всех конфигураций сеансов для $True.

Enable-PSRemoting удаляет параметры Deny_All и Network_Deny_All. Это обеспечивает удаленный доступ к конфигурациям сеансов, зарезервированным для локального использования.