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次のように、 objectに新しいメンバーを追加$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があります。

Format-List次のコマンドレットを使用して、すべてのプロパティの完全な一覧を取得できます。

$o | Format-List *

これで、以前に追加したプロパティが見つかります。

Select-Object回避策として、コマンドレットを使用して、出力するプロパティを手動で選択することもできます。

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