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
Невозможно передать объекты в этот командлет.
Выходные данные
Этот командлет возвращает строки, описывающие результаты.
Примечания
Этот командлет доступен только на платформах 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. Это обеспечивает удаленный доступ к конфигурациям сеансов, зарезервированным для локального использования.
Связанные ссылки
PowerShell