2

以下 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

4

1 回答 1

2

不会通过将整个对象输出到控制台来打印整个对象。有一个预定义的视图指定System.Management.ManagementObject#root\cimv2\Win32_ComputerSystem打印 a 的哪些属性。

Format-List您可以使用cmdlet获取所有属性的完整列表:

$o | Format-List *

现在您将找到您之前添加的属性。

Select-Object作为一种解决方法,您还可以使用cmdlet手动选择要输出的属性:

$o | Select-Object Domain, Manufacturer, Model, Name, PrimaryOwnerName, TotalPhysicalMemory, TotalPhysicalMemoryGB
于 2017-01-31T10:17:18.530 回答