多个WMI查询到单个Format-Table中

时间:2014-04-25 21:18:06

标签: powershell

我认为我需要帮助的是将多个WMI查询放入一个表中。

例如:

Get-WmiObject Win32_Processor -ComputerName $server | Format-Table PSComputerName,DataWidth

没关系,但我也需要同一行的操作系统版本。为此,我必须查询Win32_OperatingSystem并提取Caption属性。那么如何将两个单独的WMI查询放入同一个表中呢?

我尝试了以下内容:

$os = gmi Win32_Processor -Computername $server
$cpu = gmi Win32_OperatingSystem -Computername $server

然后我可以轻松获得我想要的属性:

$os.PSComputerName,$cpu.Caption,$os.DataWidth

但是从我读过的内容来看,Format-Table只接受来自单个管道的数据。它似乎不知道如何处理(变量)。(属性)

理想情况下,我可以作为scriptblock中的最后一个cmdlet运行:

Format-Table $os.PSComputername,$cpu.Caption,$os.DataWidth

但当然,Format-Table总是在一行的末尾,而不是在开头。

2 个答案:

答案 0 :(得分:1)

您可以为其中一个对象使用Calculated Property,为另一个使用普通管道:

$os = gwmi Win32_OperatingSystem -Computername $server
gwmi Win32_Processor -ComputerName $server | Format-Table @{name="ComputerName"; exp={$os.PSComputerName}},Caption,DataWidth

答案 1 :(得分:0)

如果我以前的编辑不清楚:

$ cpu = gwmi Win32_Processor -ComputerName $ server

gwmi Win32_OperatingSystem -ComputerName $ server | Format-Table @ {name =“ComputerName”; exp = {$ cpu.PSComputerName}},Caption,@ {name =“DataWidth”; EXP = {$ cpu.DataWidth}}