Enable-PSRemoting

将计算机配置为接收远程命令。

语法

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

说明

Enable-PSRemoting cmdlet 将计算机配置为接收使用 WS-Management 技术发送的 PowerShell 远程命令。

默认情况下,在 Windows Server 2012 及更高版本上启用 PowerShell 远程处理。 可以使用 Enable-PSRemoting 在其他受支持的 Windows 版本上启用 PowerShell 远程处理,并在远程处理被禁用时重新启用远程处理。

只需在接收命令的每台计算机上运行此命令一次。 无需在仅发送命令的计算机上运行它。 由于配置启动侦听器,因此谨慎地仅在需要时运行它。

从 PowerShell 3.0 开始,Enable-PSRemoting cmdlet 可以在计算机位于公共网络上时在 Windows 的客户端版本上启用 PowerShell 远程处理。 有关详细信息,请参阅 SkipNetworkProfileCheck 参数的说明。

Enable-PSRemoting cmdlet 执行以下作:

  • 运行 Set-WSManQuickConfig cmdlet,该 cmdlet 执行以下任务:
    • 启动 WinRM 服务。
    • 将 WinRM 服务上的启动类型设置为“自动”。
    • 创建侦听器以接受任何 IP 地址上的请求。
    • 为 WS-Management 通信启用防火墙例外。
    • 注册 Microsoft.PowerShellMicrosoft.PowerShell.Workflow 会话配置(如果尚未注册)。
    • 在 64 位计算机上注册 Microsoft.PowerShell32 会话配置(如果尚未注册)。
    • 启用所有会话配置。
    • 更改所有会话配置的安全描述符以允许远程访问。
  • 重启 WinRM 服务,使上述更改生效。

若要在 Windows 平台上运行此 cmdlet,请使用“以管理员身份运行”选项启动 PowerShell。

有关使用 PowerShell 远程处理的详细信息,请参阅以下文章:

示例

示例 1:将计算机配置为接收远程命令

此命令将计算机配置为接收远程命令。

PowerShell
Enable-PSRemoting

示例 2:将计算机配置为在没有确认提示的情况下接收远程命令

此命令将计算机配置为接收远程命令。 Force 参数禁止显示用户提示。

PowerShell
Enable-PSRemoting -Force

示例 3:允许对客户端进行远程访问

此示例演示如何在 Windows作系统的客户端版本上允许从公用网络进行远程访问。 对于不同版本的 Windows,防火墙规则的名称可能有所不同。 使用 Get-NetFirewallRule 查看规则列表。 在启用防火墙规则之前,请查看规则中的安全设置,以验证配置是否适合你的环境。

PowerShell
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作系统的服务器版本,默认情况下允许从同一本地子网中的公用网络进行远程访问。

NetSecurity 模块中的 Set-NetFirewallRule cmdlet 添加了允许从任何远程位置从公用网络远程访问的防火墙规则。 这包括不同子网中的位置。

备注

防火墙规则的名称可能因 Windows 版本而异。 使用 Get-NetFirewallRule cmdlet 列出系统上的规则的名称。

参数

-Confirm

在运行 cmdlet 之前,提示你进行确认。

类型:SwitchParameter
别名:cf
Position:Named
默认值:False
必需:False
接受管道输入:False
接受通配符:False

-Force

强制命令运行而不要求用户确认。

类型:SwitchParameter
Position:Named
默认值:None
必需:False
接受管道输入:False
接受通配符:False

-SkipNetworkProfileCheck

指示当计算机在公用网络上时,此 cmdlet 在 Windows作系统的客户端版本上启用远程处理。 此参数为仅允许从同一本地子网中的计算机进行远程访问的公共网络启用防火墙规则。

此参数不会影响 Windows作系统的服务器版本,默认情况下,该作系统具有公用网络的本地子网防火墙规则。 如果在服务器版本上禁用了本地子网防火墙规则,Enable-PSRemoting 重新启用它,而不考虑此参数的值。

若要删除本地子网限制并启用来自公共网络上所有位置的远程访问,请使用 NetSecurity 模块中的 Set-NetFirewallRule cmdlet。

此参数是在 PowerShell 3.0 中引入的。

类型:SwitchParameter
Position:Named
默认值:None
必需:False
接受管道输入:False
接受通配符:False

-WhatIf

显示 cmdlet 运行时会发生什么情况。 该 cmdlet 未运行。

类型:SwitchParameter
别名:wi
Position:Named
默认值:False
必需:False
接受管道输入:False
接受通配符:False

输入

None

不能通过管道将对象传递给此 cmdlet。

输出

String

此 cmdlet 返回描述其结果的字符串。

备注

从 PowerShell 3.0 开始,Enable-PSRemoting 通过将所有会话配置 已启用 属性的值设置为 $True来启用所有会话配置。

  • 在 Windows作系统的服务器版本中,Enable-PSRemoting 为允许远程访问的专用网络和域网络创建防火墙规则,并为公共网络创建防火墙规则,该规则仅允许从同一本地子网中的计算机进行远程访问。

  • 在 Windows作系统的客户端版本上,PowerShell 3.0 中的 Enable-PSRemoting 为允许不受限制的远程访问的专用和域网络创建防火墙规则。 若要为允许从同一本地子网进行远程访问的公共网络创建防火墙规则,请使用 SkipNetworkProfileCheck 参数。

  • 在 Windows作系统的客户端或服务器版本中,若要为删除本地子网限制并允许远程访问的公共网络创建防火墙规则,请使用 NetSecurity 模块中的 Set-NetFirewallRule cmdlet 运行以下命令:Set-NetFirewallRule -Name "WINRM-HTTP-In-TCP-PUBLIC" -RemoteAddress Any

Enable-PSRemoting 通过将 已启用 属性的值设置为 $True来启用所有会话配置来启用所有会话配置。

Enable-PSRemoting 删除 Deny_AllNetwork_Deny_All 设置。 这提供对保留供本地使用的会话配置的远程访问。