about_Remote_Requirements
简短说明
介绍在 PowerShell 中运行远程命令的系统要求和配置要求。
长说明
本主题介绍在 PowerShell 中建立远程连接和运行远程命令的系统要求、用户要求和资源要求。 它还提供有关配置远程操作的说明。
注意
某些 cmdlet 从远程计算机 RPC 连接或 WMI 会话获取对象以进行远程连接。 它们不使用 PowerShell 远程处理基础结构。 本文档中的要求不适用于这些 cmdlet。
若要查找具有 ComputerName 参数但不使用 PowerShell 远程处理的 cmdlet,请阅读 cmdlet 的 ComputerName 参数的说明。
系统要求
在 Windows 中,PowerShell 远程处理使用 Windows 远程管理 (WinRM),这由 Windows Management Framework (WMF) 提供。 若要在 PowerShell 上运行远程会话,本地计算机和远程计算机必须具有以下各项:
- Windows PowerShell 3.0 或更高版本
- Microsoft .NET Framework 4 或更高版本
- Windows 远程管理 3.0 或更高版本
若要在 Windows PowerShell 2.0 上运行远程会话,本地计算机和远程计算机必须具有以下各项:
- Windows PowerShell 2.0 或更高版本
- Microsoft .NET Framework 2.0 或更高版本
- Windows 远程管理 2.0
若要得到完全支持,应使用 WMF 5.1。 有关 WMF 支持的详细信息,请参阅 Windows Management Framework (WMF)。
可以在运行 Windows PowerShell 2.0 的计算机与运行较新版本 PowerShell 的计算机之间创建远程会话。 但是,仅在新版本的 PowerShell 上运行的功能(例如断开连接和重新连接到会话的功能)仅在两台计算机都运行 Windows PowerShell 3.0 及更高版本时才可用。
若要查找已安装的 PowerShell 版本的版本号,请使用 $PSVersionTable
自动变量。
PowerShell 7 及更高版本还支持通过 SSH 进行 PowerShell 远程处理。 通过 SSH 进行 PowerShell 远程处理让你能够连接到运行 SSH 的任何 Windows、macOS 或 Linux 主机。 有关详细信息,请参阅通过 SSH 进行 PowerShell 远程处理。
用户权限
若要创建远程会话并运行远程命令,默认情况下,当前用户必须是远程计算机上的 Administrators 组的成员,或者提供管理员的凭据。 否则,该命令将失败。
在远程计算机上创建会话和运行命令所需的权限由会话配置建立。 会话配置定义远程计算机上的连接终结点的配置选项。 具体而言,会话配置上的安全描述符确定谁有权访问会话配置,以及谁可以使用它进行连接。
默认会话配置(Microsoft.PowerShell 和 Microsoft.PowerShell32)的安全描述符仅允许访问 Administrators 组的成员。
计算机上的 Administrators 组的成员可以通过更改默认会话配置上的安全描述符或使用不同的安全描述符创建新的会话配置来确定谁有权远程连接到计算机。 用户可以使用 *-PSSession
cmdlet 的 ConfigurationName 参数连接到不同的终结点。
有关会话配置的详细信息,请参阅 about_Session_Configurations。
Windows 网络位置
从 Windows PowerShell 3.0 开始,Enable-PSRemoting
cmdlet 可以在 Windows 的客户端和服务器版本中启用远程处理。
在具有专用网络和域网络的 Windows 服务器版本中,Enable-PSRemoting
cmdlet 会创建允许不受限远程访问的防火墙规则。 它还可为公用网络创建防火墙规则,该规则仅允许从同一本地子网中的计算机进行远程访问。 默认情况下,此本地子网防火墙规则在公用网络中的 Windows 服务器版本上处于启用状态,但 Enable-PSRemoting
会重新应用该规则(如果更改或删除了该规则)。
在具有专用网络和域网络的 Windows 客户端版本上,Enable-PSRemoting
会创建允许不受限远程访问的防火墙规则。
若要在具有公用网络的 Windows 客户端版本上启用远程处理,请使用 Enable-PSRemoting
cmdlet 的 SkipNetworkProfileCheck 参数。 此选项会创建一个防火墙规则,该规则仅允许从同一本地子网中的计算机进行远程访问。
若要删除公用网络上的本地子网限制并允许从 Windows 客户端和服务器版本上的所有位置进行远程访问,请使用 NetSecurity 模块中的 Set-NetFirewallRule
cmdlet。 运行以下命令:
Set-NetFirewallRule -Name "WINRM-HTTP-In-TCP-PUBLIC" -RemoteAddress Any
注意
不同版本 Windows 上的防火墙规则名称可能有所不同。 使用 Get-NetFirewallRule
查看规则列表。 在启用防火墙规则之前,请查看规则中的安全设置,以验证配置是否适合你的环境。
在服务器版 Windows 上的 Windows PowerShell 2.0 中,Enable-PSRemoting
会创建允许在所有网络上进行远程访问的防火墙规则。
在客户端版 Windows 上的 Windows PowerShell 2.0 中,Enable-PSRemoting
仅在专用网络和域网络上创建防火墙规则。 如果网络位置是公共的,则 Enable-PSRemoting
会失败。
以管理员身份运行
以下远程处理操作需要管理员权限:
- 建立与本地计算机的远程连接。 这通常称为“环回”方案。
- 在本地计算机上管理会话配置。
- 在本地计算机上查看和更改 WS-Management 设置。 这些是 WSMAN: 驱动器的 LocalHost 节点中的设置。
即使你是本地计算机上的 Administrators 组的成员,也必须使用“以管理员身份运行”选项启动 PowerShell。
从其他程序(如 cmd.exe
)启动 Windows PowerShell 时,请使用“以管理员身份运行”选项启动程序。
如何配置计算机以进行远程处理
运行任何受支持 Windows 版本的计算机可以在 PowerShell 中建立远程连接并运行远程命令,而无需进行任何配置。 但是,若要接收远程连接,必须在计算机上启用 PowerShell 远程处理。
默认情况下,Windows Server 2012 和较新版本的 Windows Server 启用了 PowerShell 远程处理。 如果更改了设置,则可以通过运行 Enable-PSRemoting
cmdlet 来还原默认设置。
默认情况下,WinRM 服务(即 Web Services for Management (WS-Management) 协议的 Microsoft 实现)支持 PowerShell 的远程处理功能。 启用 PowerShell 远程处理时,可以更改 WS-Management 的默认配置,并添加允许用户连接到 WS-Management 的系统配置。
若要将 PowerShell 配置为接收远程命令,请执行以下操作:
- 使用“以管理员身份运行”选项启动 PowerShell。
- 在命令提示符处,键入:
Enable-PSRemoting
若要验证远程处理是否已正确配置,请运行一个测试命令(例如以下命令),该命令在本地计算机上创建远程会话。
New-PSSession
如果远程处理配置正确,则该命令会在本地计算机上创建会话,并返回一个表示会话的对象。
Id Name ComputerName State ConfigurationName
-- ---- ------------ ----- -----
1 Session1 localhost Opened Microsoft.PowerShell
如果命令失败,请参阅 about_Remote_Troubleshooting。
了解策略
远程工作时,你使用两个 PowerShell 实例,一个在本地计算机上,另一个在远程计算机上。 因此,你的工作受本地和远程计算机上的 Windows 和 PowerShell 策略影响。
连接之前和建立连接时,本地计算机上的策略有效。 使用连接时,远程计算机上的策略有效。