【问题标题】:Powershell: Display array-members in ConvertTo-HTMLPowershell:在 ConvertTo-HTML 中显示数组成员
【发布时间】:2011-07-03 22:10:28
【问题描述】:

我有一组带有 NoteProperties 的对象。这些属性之一是数组。 当我使用 ConvertTo-HTML 时,我想有一种简单的方法来显示这个 noteproperty 的成员,而不仅仅是 '[System.Object]'。

例如,我有一个名为“Computername”的属性和一个名为“Disks”的属性,它实际上是该计算机所有磁盘的数组。 ConvertTo-HTML 的输出如下所示:

Computername    Disks
fs              System.Object[]
dc1             System.Object[]

有没有一种简单的方法来显示“磁盘”的成员而无需手动创建 html 输出?

编辑:
一个磁盘对象实际上有 3 个值(名称、容量和可用空间)也必须显示。 $collection[0].Disks 在 powershell 提示符下的输出可能如下所示(取决于磁盘数等):

PS > $collection[0].Disks

Bezeichnung                                                  Kapazität (MB)                                              Freier Speicher (MB)                                       
-----------                                                  --------------                                              --------------------                                       
C:\                                                          40963                                                       23040 (56 %)                                               
D:\                                                          184324                                                      39024 (21 %)                                               
E:\                                                          204805                                                      103373 (50 %)              

我正在考虑类似于树的东西,它首先显示计算机名,然后是该计算机所有磁盘的表。像(可能更漂亮;)):

Computername    
fs             
               Bezeichnung                                                  Kapazität (MB)                                              Freier Speicher (MB)                                       
               -----------                                                  --------------                                              --------------------                                       
               C:\                                                          40963                                                       23040 (56 %)                                               
               D:\                                                          184324                                                      39024 (21 %)                                               
               E:\                                                          204805                                                      103373 (50 %)              
dc1 

【问题讨论】:

    标签: powershell


    【解决方案1】:

    在这种情况下,我通常的做法是将数据扩展为更适合表格的格式,而不是花费大量时间自定义 HTML。

    $collection |
      select ComputerName -ExpandProperty Disks |
      ConvertTo-Html -Fragment -Property ComputerName,Name,Capacity,'Free Space'
    

    这会扩展每台计算机的磁盘列表,以便每一个都出现在表中计算机名称旁边的单独一行中。

    ComputerName Name Capacity Free Space
    ------------ ---- -------- ----------
    fs           C:\    109324      60986
    fs           D:\    289313     281692
    dc1          C:\    290473      12626
    dc1          D:\    283195     125983
    dc1          E:\    105652      13898
    

    【讨论】:

      【解决方案2】:

      您可以预先将它们转换为字符串:

      Get-Foo | foreach { $_.Disks = $_.Disks -join ', ' } | ConvertTo-HTML
      

      或者可能没有实际更改您的对象:

      Get-Foo | select Computername,@{L=Disks;E={$_.Disks -join ', '}}
      

      【讨论】:

      • 感谢您的建议。很抱歉,我忘了告诉我要显示的每个磁盘有 3 个(或更多)值。我想到了一个类似于树的东西,首先显示计算机名,然后是它下面所有磁盘的表。
      • 我认为在这种情况下,您需要的不仅仅是一个 ConvertTo-HTML。我认为如果不自己构建一些 HTML 就无法做到这一点。不过,您仍然可以使用 ConvertTo-HTML 创建磁盘表。
      猜你喜欢
      • 1970-01-01
      • 2017-02-18
      • 2018-11-14
      • 1970-01-01
      • 1970-01-01
      • 2013-04-18
      • 1970-01-01
      • 2016-04-06
      • 1970-01-01
      相关资源
      最近更新 更多