要在Invoke-command中传递参数,您需要使用-ArgumentList参数。例如,我们需要在远程服务器上获取记事本处理信息。
Invoke-Command -ComputerName Test1-Win2k12 - ScriptBlock{param($proc) Get-Process -Name $proc} - ArgumentList "Notepad"
输出结果
Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName PSComputerName ------- ------ ----- ----- ------ -- -- ----------- -------------- 67 8 1348 7488 0.08 104 notepad Test1-Win2k12
在上面的示例中,我们将“记事本”名称作为命令的参数传递,并且Param()内的$proc变量捕获了该名称。
如果有多个,请检查以下命令以传递多个参数。
Invoke-Command -ComputerName Test1-Win2k12 -ScriptBlock{param($proc,$proc2) Get-Process -Name $proc,$proc2} -ArgumentList "Notepad","Calc"
输出结果
Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName PSComputerName ------- ------ ----- ----- ------ -- -- ----------- -------------- 96 20 5980 11392 0.19 288 calc Test1-Win2k12 67 8 1344 7556 0.08 104 notepad Test1-Win2k12
使用Session变量也可以实现相同的目的。
$sess = New-PSSession -ComputerName Test1-win2k12 Invoke-Command -Session $sess -ScriptBlock{param($proc) Get-Process $proc} -ArgumentList "Notepad"
输出结果
Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName PSComputerName ------- ------ ----- ----- ------ -- -- ----------- -------------- 67 8 1348 7488 0.08 104 notepad Test1-Win2k12