Enable-PSRemoting

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

语法

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

说明

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

在Windows Server 2012上,默认启用Windows PowerShell远程处理。 如果将其禁用,可使用 Enable-PSRemoting 启用其他受支持版本的 Windows 上的 Windows PowerShell 远程处理,以及重新启用 Windows Server 2012 上的远程处理。

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

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

Enable-PSRemoting cmdlet 将执行以下操作:

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

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

注意

在同时具有 Windows PowerShell 3.0 和 Windows PowerShell 2.0 引擎的系统上,请勿使用 Windows PowerShell 2.0 来运行 Enable-PSRemoting 和 Disable-PSRemoting cmdlet。 这些命令可能看起来是成功的,但并未正确配置远程处理。 远程命令以及之后启用和禁用远程访问的尝试都很可能会失败。

示例

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

Enable-PSRemoting

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

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

Enable-PSRemoting -Force

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

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

Enable-PSRemoting -SkipNetworkProfileCheck -Force

Set-NetFirewallRule -Name "WINRM-HTTP-In-TCP-PUBLIC" -RemoteAddress Any

此示例演示如何在客户端版本的 Windows 上允许来自公用网络的远程访问。 在使用这些命令之前,请先分析安全设置并确认计算机网络将不会受到伤害。

第一个命令在 Windows PowerShell 中启用远程处理。 默认情况下,这将创建网络规则,以允许来自专用网络和域网络的远程访问。 该命令使用 SkipNetworkProfileCheck 参数来允许来自相同本地子网中的公用网络的远程访问。 该命令使用 Force 参数禁止显示确认消息。

SkipNetworkProfileCheck 参数在服务器版本的 Windows 上无效,默认情况下,该版本的 Windows 在允许来自相同本地子网中的公用网络的远程访问。

第二个命令将消除子网限制。 该命令使用 NetSecurity 模块中的 Set-NetFirewallRule cmdlet 添加防火墙规则,该规则允许从任何远程位置从公用网络进行远程访问。 这包括不同子网中的位置。

参数

-Confirm

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

Type:SwitchParameter
Aliases:cf
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Force

取消所有用户提示。 默认情况下,系统将提示你确认每个操作。

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-SkipNetworkProfileCheck

当客户端版本的 Windows 位于公用网络时,启用该计算机上的远程处理。 此参数只允许为公用网络启用防火墙规则,该规则只允许远程访问同一本地子网中的计算机。

此参数对 Windows 的服务器版本不起作用,这些版本在默认情况下具有适用于公用网络的本地子网防火墙规则。 如果本地子网防火墙规则在 Windows 的服务器版本上处于禁用状态,则 Enable-PSRemoting 将重新启用它,而不考虑此参数的值。

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

已在 Windows PowerShell 3.0 中引入了此参数。

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-WhatIf

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

Type:SwitchParameter
Aliases:wi
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

输入

None

不能通过管道将输入传递给此 cmdlet。

输出

String

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

备注

  • 在 Windows PowerShell 3.0 中,Enable-PSRemoting 将为 WS-Management 通信创建以下防火墙例外。

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

    在客户端版本的 Windows 上,Windows PowerShell 3.0 中的 Enable-PSRemoting 将为专用网络和域网络创建防火墙规则,以允许不受限制的远程访问。 若要为公用网络创建防火墙规则,以允许来自相同本地子网的远程访问,请使用 SkipNetworkProfileCheck 参数。

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

  • 在 Windows PowerShell 2.0 中,Enable-PSRemoting 将为 WS-Management 通信创建以下防火墙例外。

    在服务器版本的 Windows 上,它将为所有网络创建防火墙规则,以允许远程访问。

    在客户端版本的 Windows 上,Windows PowerShell 2.0 中的 Enable-PSRemoting 仅为域网络位置和专用网络位置创建防火墙例外。 为了尽量降低安全风险,Enable-PSRemoting 将不会在客户端版本的 Windows 上为公用网络创建防火墙规则。 如果当前网络位置为公用,则 Enable-PSRemoting 将返回以下消息:“无法检查防火墙的状态。”

  • 从 Windows PowerShell 3.0 开始,Enable-PSRemoting 通过将所有会话配置的 Enabled 属性的值 (WSMan:\<ComputerName>\Plugin\<SessionConfigurationName>\Enabled) 设置为 True ($true) 来启用所有会话配置。

  • 在 Windows PowerShell 2.0 中,Enable-PSRemoting 从会话配置的安全描述符中删除了 Deny_All 设置。 在 Windows PowerShell 3.0 中,Enable-PSRemoting 删除了 Deny_All 和 Network_Deny_All 设置,从而提供对为供本地使用而保留的会话配置的远程访问。