关于远程要求

简短说明

介绍在 PowerShell 中运行远程命令的系统要求和配置要求。

详细说明

本主题介绍在 PowerShell 中建立远程连接和运行远程命令的系统要求、用户要求和资源要求。 它还提供有关配置远程操作的说明。

注意:许多 cmdlet (包括 Get-Service、Get-Process、Get-WMIObject、Get-EventLog 和 Get-WinEvent cmdlet,) 使用 Microsoft .NET Framework 方法从远程计算机获取对象来检索对象。 它们不使用 PowerShell 远程处理基础结构。 本文档中的要求不适用于这些 cmdlet。

若要查找具有 ComputerName 参数但不使用Windows PowerShell远程处理的 cmdlet,请阅读 cmdlet 的 ComputerName 参数的说明。

系统要求

若要在 Windows PowerShell 3.0 上运行远程会话,本地计算机和远程计算机必须具有以下各项:

  • 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

可以在运行 Windows PowerShell 2.0 和 Windows PowerShell 3.0 的计算机之间创建远程会话。 但是,仅在 Windows PowerShell 3.0 上运行的功能(例如断开连接和重新连接到会话的功能)仅在两台计算机都运行 Windows PowerShell 3.0 时才可用。

若要查找已安装的 PowerShell 版本的版本号,请使用$PSVersionTable自动变量。

Windows 远程管理 (WinRM) 3.0 和 Microsoft .NET Framework 4 包含在 windows 操作系统的 Windows 8、Windows Server 2012 和较新版本中。 WinRM 3.0 包含在适用于较旧操作系统的 Windows Management Framework 3.0 中。 如果计算机没有所需的 WinRM 版本或 Microsoft .NET Framework,安装将失败。

用户权限

若要创建远程会话并运行远程命令,默认情况下,当前用户必须是远程计算机上管理员组的成员或提供管理员凭据。 否则,该命令将失败。

(远程计算机或本地计算机上的远程会话中创建会话和运行命令所需的权限) 由会话配置 (也称为“终结点”) 在该会话连接到的远程计算机上建立。 具体而言,会话配置上的安全描述符确定谁有权访问会话配置以及谁可以使用它进行连接。

默认会话配置(Microsoft.PowerShell、Microsoft.PowerShell32 和 Microsoft.PowerShell.Workflow)上的安全描述符仅允许管理员组的成员访问。

如果当前用户无权使用会话配置,则运行命令 (使用临时会话) 或在远程计算机上创建持久会话的命令将失败。 用户可以使用创建会话的 cmdlet 的 ConfigurationName 参数来选择其他会话配置(如果可用)。

计算机上的 Administrators 组的成员可以通过更改默认会话配置上的安全描述符以及使用不同的安全描述符创建新的会话配置来确定谁有权远程连接到计算机。

有关会话配置的详细信息,请参阅 about_Session_Configurations

WINDOWS 网络位置

从 Windows PowerShell 3.0 开始,Enable-PSRemoting cmdlet 可以在专用网络、域和公共网络上的 Windows 客户端和服务器版本上启用远程处理。

在具有专用网络和域网络的 Windows 服务器版本上,Enable-PSRemoting cmdlet 会创建允许无限制远程访问的防火墙规则。 它还为公用网络创建防火墙规则,仅允许从同一本地子网中的计算机进行远程访问。 默认情况下,此本地子网防火墙规则在公用网络上的服务器版本的 Windows 上启用,但 Enable-PSRemoting 重新应用该规则,以防更改或删除该规则。

在具有专用和域网络的客户端版本的 Windows 上,默认情况下,Enable-PSRemoting cmdlet 会创建允许无限制远程访问的防火墙规则。

若要在具有公用网络的 Windows 客户端版本上启用远程处理,请使用 Enable-PSRemoting cmdlet 的 SkipNetworkProfileCheck 参数。 它创建一个防火墙规则,仅允许从同一本地子网中的计算机进行远程访问。

若要删除公用网络上的本地子网限制,并允许从客户端和服务器版本的 Windows 上的所有位置进行远程访问,请使用 NetSecurity 模块中的 Set-NetFirewallRule cmdlet。 运行以下命令:

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

在 Windows PowerShell 2.0 中,在服务器版本的 Windows 中,Enable-PSRemoting 会创建允许在所有网络上进行远程访问的防火墙规则。

在 Windows PowerShell 2.0 中,在客户端版本的 Windows 中,Enable-PSRemoting 仅在专用和域网络上创建防火墙规则。 如果网络位置是公共的,则 Enable-PSRemoting 失败。

以管理员身份运行

以下远程处理操作需要管理员权限:

  • 与本地计算机建立远程连接。 这通常称为“环回”方案。

  • 管理本地计算机上的会话配置。

  • 在本地计算机上查看和更改 WS-Management 设置。 这些是 WSMAN: 驱动器的 LocalHost 节点中的设置。

若要执行这些任务,必须使用“以管理员身份运行”选项启动 PowerShell,即使你是本地计算机上的管理员组的成员也是如此。

在 Windows 7 和 Windows Server 2008 R2 中,若要启动Windows PowerShell,请使用“以管理员身份运行”选项:

  1. 依次单击“开始”、“所有程序”、“附件”和Windows PowerShell文件夹。
  2. 右键单击“Windows PowerShell”,然后单击“以管理员身份运行”。

若要使用“以管理员身份运行”选项开始Windows PowerShell:

  1. 单击“开始”,单击“所有程序”,然后单击“Windows PowerShell”文件夹。
  2. 右键单击“Windows PowerShell”,然后单击“以管理员身份运行”。

“以管理员身份运行”选项也适用于Windows PowerShell的其他 Windows 资源管理器条目,包括快捷方式。 只需右键单击该项,然后单击“以管理员身份运行”。

从其他程序(如 Cmd.exe)开始Windows PowerShell时,请使用“以管理员身份运行”选项启动程序。

如何配置计算机进行远程处理

运行所有受支持的 Windows 版本的计算机可以在 PowerShell 中建立远程连接,并在 PowerShell 中运行远程命令,而无需进行任何配置。 但是,若要接收连接,并允许用户创建本地和远程用户管理的 PowerShell 会话 (“PSSessions”) 并在本地计算机上运行命令,必须在计算机上启用 PowerShell 远程处理。

默认情况下,为 PowerShell 远程处理启用Windows Server 2012和较新版本的 Windows Server。 如果更改了设置,可以通过运行 Enable-PSRemoting cmdlet 来还原默认设置。

在所有其他受支持的 Windows 版本上,需要运行 Enable-PSRemoting cmdlet 以启用 PowerShell 远程处理。

WinRM 服务支持 PowerShell 的远程处理功能,WinRM 服务是用于管理的 Web 服务 (WS-Management) 协议的 Microsoft 实现。 启用 PowerShell 远程处理时,可以更改 WS-Management 的默认配置,并添加允许用户连接到 WS-Management 的系统配置。

若要将 PowerShell 配置为接收远程命令,请执行以下操作:

  1. 使用“以管理员身份运行”选项启动 PowerShell。
  2. 在命令提示符处,键入:Enable-PSRemoting

若要验证是否已正确配置远程处理,请运行如下测试命令,以在本地计算机上创建远程会话。

New-PSSession

如果远程处理配置正确,该命令将在本地计算机上创建一个会话,并返回表示该会话的 对象。 输出应类似于以下示例输出:

Id Name        ComputerName    State    ConfigurationName
-- ----        ------------    -----    -----
1  Session1    localhost       Opened   Microsoft.PowerShell

如果命令失败,请参阅 about_Remote_Troubleshooting以获取帮助。

了解策略

远程工作时,使用两个 PowerShell 实例,一个在本地计算机上,另一个在远程计算机上。 因此,你的工作将受到本地和远程计算机上的 Windows 策略和 PowerShell 策略的影响。

通常,在连接之前和建立连接时,本地计算机上的策略将生效。 使用连接时,远程计算机上的策略将生效。

另请参阅

about_Remote

about_Remote_Variables

about_PSSessions

Invoke-Command

Enter-PSSession

New-PSSession