以下powershell获取计算机系统信息的对象:
> $o = Get-WmiObject -Class Win32_ComputerSystem -ComputerName .
> $o
# output
# Domain : somedomain.com
# Manufacturer : VMware, Inc.
# Model : VMware Virtual Platform
# Name : MYSERVER
# PrimaryOwnerName : Windows User
# TotalPhysicalMemory : 17179332608
我将新成员TotalPhysicalMemoryGB
添加到对象$o
,如下所示:
> $o = Add-Member -Input $o @{TotalPhysicalMemoryGB=([math]::round($t.TotalPhysicalMemory / 1GB))} -PassThru
这似乎可行,因为我可以访问该成员:
> $o.TotalPhysicalMemoryGB
# output
# 16
但是,当我再次打印整个对象时,成员TotalPhysicalMemoryGB
不会出现在成员列表中:
> $o
# output
# Domain : somedomain.com
# Manufacturer : VMware, Inc.
# Model : VMware Virtual Platform
# Name : MYSERVER
# PrimaryOwnerName : Windows User
# TotalPhysicalMemory : 17179332608
我做错了什么?如何在打印$o
时包含新成员?
答案 0 :(得分:2)
您不打印整个对象只需将其输出到控制台即可。有一个预定义视图,用于指定打印System.Management.ManagementObject#root\cimv2\Win32_ComputerSystem
的哪些属性。
您可以使用Format-List
cmdlet
$o | Format-List *
现在您将找到之前添加的属性。
作为一种变通方法,您还可以使用Select-Object
cmdlet手动选择要输出的属性:
$o | Select-Object Domain, Manufacturer, Model, Name, PrimaryOwnerName, TotalPhysicalMemory, TotalPhysicalMemoryGB