如何在 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

更新於: 2020 年 11 月 11 日

14K+ 瀏覽量

開啟你的 職業生涯

完成本課程並獲得認證

開始
廣告