我认为我需要帮助的是将多个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总是在一行的末尾,而不是在开头。
答案 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}}