PowerShell 中 scriptblock 如何工作的?


Scriptblock 是一組可以在呼叫時一起執行的命令。在 PowerShell 中,我們通常編寫單個命令。Scriptblock 可以用兩個大括號編寫。

示例

$sb = {Get-Process powershell; Get-Service W32Time}

這裡我們在 scriptblock 下編寫了兩個命令。如果你直接執行此命令,scriptblock 會將它們視為一個字串。

PS C:\> $sb
Get-Process powershell; Get-Service W32Time

若要在 scritblock 中執行命令,請將 Invoke-Command 與 -Scriptblock 引數一起使用。

Invoke-Command -ScriptBlock $sb

輸出

Handles NPM(K)    PM(K)    WS(K)    CPU(s)    Id    SI    ProcessName
------- ------    -----    -----    ------    --    --    -----------
529       44    240240    256164    36.02    7668    1    powershell
Status : Running
Name   : W32Time
DisplayName : Windows Time

要在遠端計算機上執行命令,請使用 -ComputerName 引數。

示例

Invoke-Command -ComputerName Test1-Win2k16,Test1-Win2k12 -ScriptBlock $sb

輸出

PS C:\Scripts\AppdInstallation_Remote> Invoke-Command -ComputerName Test1-
Win2k16,Test1-Win2k12 -ScriptBlock $sb
Handles    NPM(K)    PM(K)    WS(K)    CPU(s)    Id    SI P   rocessName
PSComputerName
------- -   -----    -----    -----    ------    --    --    -----------
--------------
434          29     46200    47564    0.70     3228   1    powershell
Test1-Win2k12
Status          : Running
Name            : Spooler
DisplayName     : Print Spooler
PSComputerName  : Test1-Win2k12
583    29    57892    64636    0.59    4524    1    powershell    Test1-Win2k16
Status         : Stopped
Name           : Spooler
DisplayName    : Print Spooler
PSComputerName : Test1-Win2k16

你還可以使用 InvokeCommand cmdlet 中的 -ArgumentList 引數在 scriptblock 中傳遞引數。param 的宣告將與 PowerShell 中的函式相同。

示例

Invoke-Command -ComputerName Test1-Win2k16,Test1-Win2k12 -ScriptBlock $sb
$sb = {
   param($process,$service)
   Get-Process -Name $process
   Get-Service -Name $service
}
Invoke-Command -ScriptBlock $sb -ArgumentList "PowerShell","W32Time"

輸出

NPM(K)    PM(M)    WS(M)    CPU(s)    Id    SI    ProcessName
------    -----    -----    ------    --    --    -----------
43       234.39    22.84    43.61    7668    1    powershell
Status       : Running
Name         : W32Time
DisplayName  : Windows Time

更新於:03-Sep-2020

3K+ 檢視

開啟你的 職業生涯

完成課程並獲得認證

開始
廣告
© . All rights reserved.