Форматирование в таблице трех списков данных с помощью PowerShell - PullRequest
2 голосов
/ 05 марта 2011

У меня есть три списка номеров, которые я хотел бы напечатать. Эти три списка являются тремя коллекциями чисел. Они имеют одинаковое количество элементов, поэтому начиная с первой позиции всех трех до последней, я должен напечатать что-то вроде этого

Element in list1 pos1  |  Element in list2 pos1  |  Element in list3 pos1
Element in list1 pos2  |  Element in list2 pos2  |  Element in list3 pos2
Element in list1 pos3  |  Element in list2 pso3  |  Element in list3 pos3
Element in list1 pos4  |  Element in list2 pos4  |  Element in list3 pos4

...

Как это сделать с помощью Format-Table? Или лучше, как я могу использовать cmd-let Format-Table для решения этой проблемы?

Thankyou

Ответы [ 3 ]

3 голосов
/ 06 марта 2011

Вот одно из решений:

$c0=357,380,45
$c1=12,20,410
$c2=223,270,30

0..($c0.Length -1) | 
       select-object (
           @{n="one";   e={$c0[$_]}},
           @{n="two";   e={$c1[$_]}},
           @{n="three"; e={$c2[$_]}}
              ) | 
       format-table -auto;

Результат:

one two three
--- --- -----
357  12   223
380  20   270
 45 410    30

Объяснение

Каждый экземпляр @ {n = " blah ";e = { бла }} - это хеш-таблица.Ключи сокращены от «Имя» и «Выражение».Смотрите пример 4 на этой странице .

"$ _" представляет значение, которое передается по конвейеру. В этом случае каждое значение индекса передается по конвейеру в оператор выбора.

2 голосов
/ 06 марта 2011
 $c0 = 357,380,45
 $c1 = 12,20,410
 $c2 = 223,270,30

 $x = foreach ($i in 0..(($c0.count)-1)){
 ($c0[$i],$c1[$i],$c2[$i]) -join "," | convertfrom-csv -header "c0","c1","c2" 
 } 

 $x | ft -auto

 c0  c1  c2 
 --  --  -- 
 357 12  223
 380 20  270
 45  410 30 
1 голос
/ 06 марта 2011

Я новичок PowerShell, и я уверен, что есть лучшие способы, но я надеюсь, что этот пример может помочь вам

$e = @()
$a = 1,2,3,4
$b = 5,6,7,8
$c = 'nine','ten','eleven','twelve'
for ($i=0;$i -lt $a.count;$i++) {
$d = New-Object PSObject -Property @{            
        one       = $a[$i]
        two       = $b[$i]
        three     = $c[$i]
  }      
$e+=$d}
$e | select one,two,three | ft -auto
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...