有没有办法将两个数组合并到一个哈希表?
$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文件并创建一个哈希表来再次导出它们。
答案 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
抱歉不具体!有更简单的方法吗?