Windows PowerShell远程处理
使用WS-Management协议的Windows PowerShell远程处理使您可以在一台或多台远程计算机上运行任何Windows PowerShell命令。它使您可以建立持久连接,启动1:1交互式会话并在多台计算机上运行脚本。若要使用Windows PowerShell远程处理,必须为远程管理配置远程计算机。配置Windows PowerShell远程处理后,可以使用许多远程处理策略。本文档的其余部分仅列出其中一些。
开始互动环节
若要与一台远程计算机启动交互式会话,请使用Enter-PSSession cmdlet。例如,要启动与Server01远程计算机的交互式会话,请键入:
Enter-PSSession Server01
命令提示符将更改为显示您所连接的计算机的名称。从此以后,您在提示符下键入的任何命令都会在远程计算机上运行,并且结果将显示在本地计算机上。
要结束交互式会话,请输入:
Exit-PSSession
运行远程命令
若要在一台或多台远程计算机上运行任何命令,请使用Invoke-Command cmdlet。例如,要在Server01和Server02远程计算机上运行Get-UICulture命令,请键入:
invoke-command -computername Server01, Server02 {get-UICulture}
输出返回到您的计算机。
LCID Name DisplayName PSComputerName
---- ---- ----------- --------------
1033 en-US English (United States) server01.corp.fabrikam.com
1033 en-US English (United States) server02.corp.fabrikam.com
运行脚本
若要在一台或多台远程计算机上运行脚本,请使用Invoke-Command cmdlet的FilePath参数。该脚本必须在本地计算机上或可以在本地计算机上访问。结果将返回到本地计算机。
例如,以下命令在Server01和Server02远程计算机上运行DiskCollect.ps1脚本。
invoke-command -computername Server01, Server02 -filepath c:\Scripts\DiskCollect.ps1
建立持久连接
若要运行一系列共享数据的相关命令,请在远程计算机上创建一个会话,然后使用Invoke-Command cmdlet在您创建的会话中运行命令。若要创建远程会话,请使用New-PSSession cmdlet。
例如,以下命令在Server01计算机上创建一个远程会话,在Server02计算机上创建另一个远程会话。它将会话对象保存在$ s变量中。
$s = new-pssession -computername Server01, Server02
现在已经建立了会话,您可以在其中运行任何命令。并且由于会话是持久性的,因此您可以在一个命令中收集数据并在后续命令中使用它。
例如,以下命令在$ s变量的会话中运行Get-Hotfix命令,并将结果保存在$ h变量中。$ h变量在$ s中的每个会话中创建,但在本地会话中不存在。
invoke-command -session $s {$h = get-hotfix}
现在,您可以在后续命令中使用$ h变量中的数据,例如以下命令。结果显示在本地计算机上。
invoke-command -session $s {$h | where {$_.installedby -ne "NTAUTHORITY\SYSTEM"} }