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