Enable-PSRemoting

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

Синтаксис

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

Описание

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

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

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

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

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

Несколько установок PowerShell могут существовать параллельно на одном компьютере. При выполнении Enable-PSRemoting будет настроена конечная точка удаленного взаимодействия для конкретной версии установки, в которой выполняется командлет. Поэтому при запуске Enable-PSRemoting PowerShell 6.2 будет настроена конечная точка удаленного взаимодействия, которая запускает 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.2.

Чтобы использовать только что включенные конечные точки удаленного взаимодействия, необходимо указать их по имени с параметром ConfigurationName при создании удаленного подключения с помощью Invoke-Commandкомандлетов .New-PSSessionEnter-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.

Примеры

Пример 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.

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

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

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

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

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