将两个数组合并到一个哈希表中

时间:2014-10-01 15:42:07

标签: arrays loops powershell nested hashtable

有没有办法将两个数组合并到一个哈希表?

$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,我会多次得到每个结果,我知道这是因为嵌套的foreachs。

上面的例子不是很好,我实际上需要这个来导入不同的csv文件并创建一个哈希表来再次导出它们。

2 个答案:

答案 0 :(得分:1)

如果您使用索引迭代第一个数组,那么只有一个for循环。假设两个数组中的相同索引都给出了正确的对,请将该对添加到哈希表中。不需要嵌套循环。

一些伪代码:

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

答案 1 :(得分: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 =@()
$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

抱歉不具体!有更简单的方法吗?