如何将成员添加到现有PowerShell对象?

时间:2017-01-31 10:13:21

标签: powershell wmi windows-server-2012 powershell-v5.0 get-wmiobject

以下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时包含新成员?

1 个答案:

答案 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