1

我正在编写一个脚本来查询远程服务器的配置信息并将输出数据返回到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 个工作。我想像这样将工作分散到所有目标服务器。

4

1 回答 1

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 或更高版本。

于 2014-05-14T20:47:34.627 回答