如何处理 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
广告