我的一个班轮看起来像:
get-vm vm* |select name, numcpu,memoryGB,@{e={$_|get-harddisk |select capacityGB};l="disk"}
我的输出如下:
Name NumCpu MemoryGB disk
---- ------ -------- ----
vm1 4 96 {@{CapacityGB=60}, @{CapacityGB=300}, @{CapacityGB=200}}
vm2 8 98 {@{CapacityGB=50}, @{CapacityGB=450}}
vm3 8 96 {@{CapacityGB=200}, @{CapacityGB=50}, @{CapacityGB=300}}
vm4 2 12 {@{CapacityGB=100}, @{CapacityGB=50}}
如何清除该输出以仅显示磁盘大小编号而不是@{capacityGB= }
?
答案 0 :(得分:1)
立即解决方法是使用select -ExpandProperty capacityGB
:
get-vm vm* |select name, numcpu,memoryGB,@{e={$_|get-harddisk |select -ExpandProperty capacityGB};l="disk"}
这会导致类似:
Name NumCpu MemoryGB disk
---- ------ -------- ----
vm1 4 96 {60, 300, 200}
-ExpandProperty
表示只返回指定属性的值,而不是具有指定属性的自定义对象,这类似于{{ 1}}代表你的输出。
请注意PowerShell:
使用封闭@{CapacityGB=60}
来表示数组值属性
如果您将它们转换为{ ... }
(或在双引号字符串中使用它们),则表示各个元素。
如果输出仅用于显示,并且您需要不同的格式,请在脚本块内构建自己的输出字符串,如Frode F.'s helpful answer所示。