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+ 查看

开启你的 职业生涯

完成课程并获得认证

开始
广告