2014-10-01 103 views
0

有沒有辦法將兩個數組組合到一個哈希表?將兩個數組組合成一個哈希表

$Name = Get-ChildItem C:\Users | Select-Object Name 
$CreationTime = Get-ChildItem C:\Users | Select-Object CreationTime 

$Table = New-Object psobject 

foreach ($item in $Name) { 
    foreach ($item2 in $CreationTime) { 

    Add-Member -InputObject $Table -MemberType NoteProperty -Name $item -Value $item2 } } 

如果我只是打印出$ item和$ item2,我多次獲得每個結果,我知道這是因爲嵌套的foreach。

上面的例子不是很好,我acutally需要這個導入不同的csv文件,並創建一個哈希表來再次導出它們。

+0

爲什麼你不只是使用'Get-ChildItem C:\ Users |選擇對象名稱,創建時間?或者,這就是爲什麼你的意思是一個壞榜樣。向我們展示你實際上在做什麼可能會更好。 – Matt 2014-10-01 15:49:08

+0

是的,就像我在底部所說的那樣,我想將兩個csv文件合併爲一個散列表。 – mt7 2014-10-01 15:57:03

+0

這兩個文件共享一個公用密鑰還是可以將它們合併爲一行? – Matt 2014-10-01 16:02:35

回答

1

有一個for循環是你迭代通過第一個數組與索引。假設兩個數組中的相同索引給出正確的對,請將該對添加到散列表。無需嵌套循環。

一些僞代碼:

for ($i = 0; $i < $Name.length; $i++) { 
    Add-Member -Name $Name[$i] -Value $CreationTime[$i] 
} 
+0

感謝您的提示,像這樣的東西正在爲我工​​作: – mt7 2014-10-01 18:32:22

0

我要求會是這個樣子:

$Name = Get-ChildItem C:\Users | Select-Object Name 
$CreationTime = Get-ChildItem C:\Users | Select-Object CreationTime 
$Table = New-Object psobject 
$i = 0 

do { 

Add-Member -InputObject $Table -MemberType NoteProperty -Name $Name[$i].Name -Value $CreationTime[$i].CreationTime 

$i++ } 
while ($i -ne $name.Length) 

$Table 

然而,這種解決方案更像是我想要的東西:

$Name = Get-ChildItem C:\Users | Select-Object Name 
$CreationTime = Get-ChildItem C:\Users | Select-Object CreationTime 
$TableData [email protected]() 
$i = 0 

do { 

$Table = New-Object psobject 

Add-Member -InputObject $Table -MemberType NoteProperty -Name "FolderName:" -Value $Name.Name[$i] 
Add-Member -InputObject $Table -MemberType NoteProperty -Name "Creation Time:" -Value  $CreationTime.CreationTime[$i] 

$TableData += $Table 

$i++ } 
while ($i -ne $name.Length) 

$TableData | Export-csv -Delimiter ";" -Path $PSScriptRoot\out.csv -NoTypeInformation 

對不起因爲不具體!有沒有更簡單的方法來做到這一點?