Powershell Format-Table导致空列

时间:2012-10-09 22:58:44

标签: powershell formatting

运行:

get-vm -server hyperv
get-vm -server hyperv | format-table -AutoSize

产生5列输出,其中包含所有5列中的数据。

运行:

get-vm -server hyperv | select VMElementName,State,Host | format-table -AutoSize
get-vm -server hyperv | format-table -Property VMElementName,State,Host -AutoSize

仅在VMElementName列中生成包含数据的3列输出。任何减少列数的尝试都会导致除VMElementName列之外的所有列都为空。更改订单无效。选择任何单个列都没有区别。只有VMElementName列包含数据。

如何显示其余数据?

2 个答案:

答案 0 :(得分:3)

使用Server 2008 R2中的Hyper-V模块,Get-VM返回System.Management.ManagementObject#root\virtualization\Msvm_ComputerSystem类型的对象。换句话说,这些是基于WMI的对象,其中WMI类为Msvm_ComputerSystem

您的问题是此对象不包含您要求的某些属性。

如果您执行Get-VM | Get-Member,您可以看到可用的实际属性,我认为您想要的是

Get-VM | FT Elementname, statusdescriptions,pscomputername

Elementname                             statusdescriptions                  PSComputerName
-----------                             ------------------                  --------------
Lync - SE                               {Operating normally}                    COOKHAM8
Lync - QMS                              {Operating normally}                    COOKHAM8
Lync - DC                               {Operating normally}                    COOKHAM8
Lync - SPS2010                          {Operating normally}                    COOKHAM8
DEV1 - win7+Dev tools                   {Operating normally}                    COOKHAM8
S1.Cookham/Net (Srv2012)                {Operating normally}                    COOKHAM8
SQL2012                                 {Operating normally}                    COOKHAM8
W8.Cookham.Net(w8 RTM)                  {Operating normally}                    COOKHAM8
Lync - EXUM                             {Operating normally}                    COOKHAM8
SQL2008                                 {Operating normally}                    COOKHAM8

答案 1 :(得分:1)

Format-Table列通常表示关联的属性不存在,或者每个项的值为$ null或空字符串。如果我查看Windows 8上的Get-VM输出(我创建了一个hyper-v VM),我就看不到这些属性了。您可以使用Get-Member查看可用的属性,如下所示:

Get-VM -server hyperv | Get-Member