如何在 PowerShell 中的 Invoke-Command 中傳遞引數?
要在 Invoke-Command 中傳遞引數,你需要使用 -ArgumentList 引數。例如,我們需要在遠端伺服器上獲取 notepad 程序資訊。
示例
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
在上面的示例中,我們正在將 "Notepad" 名稱作為引數傳遞給該命令,而該命令已被 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
使用會話變數也可以實現相同的目的。
示例
$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
廣告