Powershell: отображение элементов массива в ConvertTo-HTML - PullRequest
2 голосов
/ 30 июня 2011

У меня есть коллекция объектов с NoteProperties. Одним из этих свойств является массив. Я хотел бы, чтобы при использовании ConvertTo-HTML у меня был простой способ отображать элементы этого свойства, а не просто «[System.Object]».

Например, у меня есть свойство с именем «Computername» и одно с именем «Disks», которое на самом деле является массивом всех дисков этого компьютера. Вывод ConvertTo-HTML выглядит следующим образом:

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

Есть ли простой способ отображать элементы «Диски» без создания html-вывода вручную?

Edit:
Один Disk-объект имеет фактически 3 значения (имя, емкость и свободное пространство), которые также должны быть показаны. Вывод $ collection [0]. Диски в командной строке 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 

Ответы [ 2 ]

6 голосов
/ 03 июля 2011

Мой обычный подход в подобных случаях - расширять данные в более удобный для таблиц формат, а не тратить много времени на настройку 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 голосов
/ 30 июня 2011

Вы можете заранее преобразовать их в строку:

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

или, возможно, без изменения ваших объектов:

Get-Foo | select Computername,@{L=Disks;E={$_.Disks -join ', '}}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...