Enable-PSRemoting

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

语法

Default (默认值)

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

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

参数

-Confirm

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

参数属性

类型:SwitchParameter
默认值:False
支持通配符:False
不显示:False
别名:cf

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-Force

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

参数属性

类型:SwitchParameter
默认值:False
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-SkipNetworkProfileCheck

当计算机在公用网络上时,在 Windows 的客户端版本上启用远程处理。 此参数为公共网络启用一条防火墙规则,该规则仅允许来自同一本地子网内计算机的远程访问。

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

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

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

参数属性

类型:SwitchParameter
默认值:False
支持通配符:False
不显示:False

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

-WhatIf

显示 cmdlet 运行时会发生什么情况。 命令脚本未运行。

参数属性

类型:SwitchParameter
默认值:False
支持通配符:False
不显示:False
别名:无线

参数集

(All)
Position:Named
必需:False
来自管道的值:False
来自管道的值(按属性名称):False
来自剩余参数的值:False

CommonParameters

此 cmdlet 支持通用参数:-Debug、-ErrorAction、-ErrorVariable、-InformationAction、-InformationVariable、-OutBuffer、-OutVariable、-PipelineVariable、-ProgressAction、-Verbose、-WarningAction 和 -WarningVariable。 有关详细信息,请参阅 about_CommonParameters

输入

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 通过将所有会话配置(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设置,从而提供对保留供本地使用的会话配置的远程访问。