如何使用属性名分离PowerShell远程结果


如果需要使用PowerShell在多台机器上执行同样的脚本,可以在Invoke-Comamnd命令中指定服务器列表,并行批量处理以节省时间,但是可能因为客户端连接每台机器的时间和返回结果的时间不一致,导致最终得结果交叉输出。

如何要根据机器名汇总结果,可以使用Group-Object命令

$pc1 = $env:computername
$pc2 = '192.168.2.112'

$code = 
{
Get-Service | Where-Object Status -eq Running
}

# 获取所有结果
$result = Invoke-Command -ScriptBlock $code -ComputerName $pc1, $pc2

# 根据机器名汇总
$groups = $result | Group-Object -Property PSComputerName -AsHashTable 
$groups

# 单独访问每个机器的结果
$groups.$pc1
$groups.$pc2

当指定了-AsHashTable参数后,Group-Object会创建一个键为机器名的哈希表,接下来还可以继续并行处理每个机器上的结果。

原文连接:Separating Results by Property Value

本文链接: http://www.pstips.net/separating-results-by-property-value.html
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!

关于 Mooser Lee

我是一个Powershell的爱好者,创建了PowerShell中文博客,热衷于Powershell技术的搜集和分享。本站部分内容来源于互联网,不足之处敬请谅解,并欢迎您批评指正。

Leave a comment

电子邮件地址不会被公开。 必填项已用*标注