2011-03-05 57 views
2

我有三個我想打印的數字列表。這三個列表是三個數字集合。他們有相同的號碼,以便從所有三個的第一位置開始的元素,到最後一個,我必須打印這樣的事情在表中格式化使用PowerShell的三個數據列表

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來解決這個問題?

三江源

回答

3

這裏有一個解決方案:

$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 = 「嗒嗒」 的每個實例; e = { blah}}是散列表。這些鍵是「名稱」和「表達式」的簡稱。見示例4 on this page

「$ _」表示正在輸入的值。在這種情況下,每個索引值都被輸入到select語句中。

+0

請問您能解釋我做了什麼嗎?那麼我認識到像創建一個關聯數組......關於@ oerator的帽子?謝謝 – Andry 2011-03-06 10:59:09

1

我是一個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 
2
$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