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