如何处理 Invoke-Command Scriptblock 输出?


当我们只写 Invoke-Command 时,它会在控制台上显示输出。

示例

Invoke-Command -ComputerName Test1-Win2k12 -ScriptBlock {Get-Service}

输出

它显示了输出和计算机名称。

现在假设你想对输出进行排序,或者你想处理需要存储的输出。它类似于我们把输出存储在变量中,但我们不能存储在 scriptblock 中的输出并将它显示在外。

$ser = @()
Invoke-Command -ComputerName Test1-Win2k12 -ScriptBlock {$ser = Get-Service}
Write-Output "Services output"
$ser

你不会得到上述命令的任何输出,因为 Invoke-Command 已知在远程计算机上工作。相反,我们可以使用 RETURN 命令将输出返回到主控制台。

$ser = @()
Invoke-Command -ComputerName Test1-Win2k12 -ScriptBlock {$ser = Get-Service
   return $ser
}
Write-Output "Services output"
$ser

你将得到第一张图片中显示的输出。如果你还想进一步处理输出,你还可以将整个输出存储在变量中。

示例

$sb = Invoke-Command -ComputerName Test1-Win2k12 -ScriptBlock { Get-Service}
Write-Output "Services output"
$sb

你还可以过滤上述输出。

$sb = Invoke-Command -ComputerName Test1-Win2k12 -ScriptBlock {Get-Service}
Write-Output "Services output"
$sb | Select Name, Status

更新于: 04-Jan-2021

8K+ 浏览

开启您的职业生涯

完成课程获得认证

开始使用
广告