2013-07-24 80 views
0

我有大約20個數組,每個數組包含超過100個值。powershell select-object outputs arrays on one line

我想輸出這些到一個csv文件的列標題。

如果我在PowerShell命令提示符下鍵入這些數組中的任何一個,它們將顯示在多行上,例如我可以使用$arrayname{14]從數組中選擇不同的項目,所以我認爲它們被正確存儲。

如果我用我的腳本如下一行:

"" | select-object @{Name="Column1"; Expression={"$Array1"}},@{Name="Column2"; Expression={"$Array2"}},@{Name="Column3"; Expression={"$Array3"}} | export-csv $exportLocation -notypeinformation 

然後將標題創建列,但每個數組變量顯示在一行上。

我怎樣才能得到輸出顯示在他們自己的行上的各自列的數組?

回答

2

您需要將4個數組轉換爲具有4個屬性的對象數組。試試這個:

$Array1 = @(...) 
$Array2 = @(...) 
$Array3 = @(...) 
$Array4 = @(...) 

$len1 = [Math]::Max($Array1.Length, $Array2.Length) 
$len2 = [Math]::Max($Array3.Length, $Array4.Length) 
$maxlen = [Math]::Max($len1, $len2) 

$csv = for ($i=0; $i -lt $maxlen; $i++) { 
    New-Object -Type PSCustomObject -Property @{ 
    'Column1' = $Array1[$i]; 
    'Column2' = $Array2[$i]; 
    'Column3' = $Array3[$i]; 
    'Column4' = $Array4[$i]; 
    } 
} 

$csv | Export-Csv 'C:\path\to\output.csv' 
+0

嗨,感謝您的幫助。不幸的是它不輸出任何東西這些陣列包含以下命令: $ Array1 = @(dsget group「CN = OU1,OU = Departments,OU = Groups,DC = contoso,DC = com」| dsquery user -limit 1000) $ Array2 = @( dsget group「CN = OU2,OU = Departments,OU = Groups,DC = contoso,DC = com」| dsquery user -limit 1000) $ Array3 = @(dsget group「CN = OU3 OU = Departments,OU = Groups ,DC = contoso,DC = com「| dsquery user -limit 1000) $ Array4 = @(dsget group」CN = OU4,OU = Departments,OU = Groups,DC = contoso,DC = com「| dsquery user -limit 1000) – user2615378

+0

@ user2615378我的不好。在複製/粘貼我的代碼後,我沒有修復所有變量名稱。請再試一次。 –

+0

這真是太棒了非常感謝你的幫助! – user2615378