Invoke-Command返回数据

时间:2014-05-14 20:33:45

标签: powershell remoting invoke-command

我正在编写一个脚本来查询远程服务器的配置信息,并将输出的数据返回到gridview。我遇到的问题是返回数据的格式。

如果我......

((Get-CimInstance -ClassName Win32_Processor).NumberOfLogicalProcessors | Measure-Object).Count
((Get-CimInstance -ClassName Win32_PhysicalMemory).Capacity | Measure-Object -Sum).Sum /1GB

在ps1中使用Invoke-Command在远程服务器上运行它,我得到一个只有这样的数字的数组。

2
4

如何有效地从多台机器上下文中收集此信息?我尝试过远程工作,但我一次不能超过2个工作。我想将工作分散到这样的所有目标服务器上。

1 个答案:

答案 0 :(得分:2)

这些值实际上具有计算机名称,例如:

30# $r = Invoke-Command ...
31# $r[0]
4
32# $r[0].PSComputerName
hillr2

PowerShell默认情况下不会显示该信息。你可以这样做:

32# icm hillr2 -ScriptBlock {
>>> $NumLogCpu = (Get-CimInstance Win32_Processor).NumberOfLogicalProcessors
>>> $MemSize = ((Get-CimInstance Win32_PhysicalMemory).Capacity | Measure-Object -Sum).Sum /1GB
>>> [pscustomobject]@{NumLogCpu=$NumLogCpu;MemSize=$MemSize}
>>> }


NumLogCpu      : 4
MemSize        : 8.00390625
PSComputerName : hillr2
RunspaceId     : fb03fedd-2771-46cf-916a-f31ec7c8298b

[pscustomobject]类型加速器需要PowerShell v3或更高版本。