Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用GetEnumerator()将哈希表导出到PowerShell中的csv文件?_Powershell_Csv_Active Directory_Hashtable - Fatal编程技术网

如何使用GetEnumerator()将哈希表导出到PowerShell中的csv文件?

如何使用GetEnumerator()将哈希表导出到PowerShell中的csv文件?,powershell,csv,active-directory,hashtable,Powershell,Csv,Active Directory,Hashtable,我编写了一个搜索函数,用于搜索某些active directory属性。我现在想将内容导出到.csv文件。如果我没看错的话,整个输出就是一个哈希表。但是当我尝试使用GetEnumerator()函数时,它什么都不做 有人能帮我解释一下我做错了什么吗?代码如下。提前谢谢 Import-Module ActiveDirectory $users = Get-ADUser -Filter { employeeNumber -notlike '*' } -Properties memberOf, sam

我编写了一个搜索函数,用于搜索某些active directory属性。我现在想将内容导出到.csv文件。如果我没看错的话,整个输出就是一个哈希表。但是当我尝试使用
GetEnumerator()
函数时,它什么都不做

有人能帮我解释一下我做错了什么吗?代码如下。提前谢谢

Import-Module ActiveDirectory
$users = Get-ADUser -Filter { employeeNumber -notlike '*' } -Properties memberOf, samAccountName | ForEach-Object -Process { @{ $_.samAccountName = $_.memberOf | Where-Object { $_ -like '*DAT*' } } }
$users.GetEnumerator() |
    Select-Object -Property @{N='AD1';E={$_.Key}},
    @{N='AD2';E={$_.Value}} |
        Export-Csv -NoTypeInformation -Path H:\test123.csv

如果查看代码,您正在创建一个包含SamAccountName和组的哈希表列表。但是,当您使用枚举器时,您只考虑哈希表,而不是您创建的列表

这就是迭代哈希表的方式。首先创建一个哈希表并向其中添加所有元素

$hash = @{}
Get-ADUser -Filter { employeeNumber -notlike '*' } -Properties memberOf, samAccountName | ForEach-Object -Process { $hash.Add($_.samAccountName, ($_.memberOf | Where-Object { $_ -like '*DAT*' }))  }
$hash.GetEnumerator() |
    Select-Object -Property @{N='AD1';E={$_.Key}},
    @{N='AD2';E={$_.Value}} |
        Export-Csv -NoTypeInformation -Path H:\test123.csv
或者,您可以继续使用哈希表列表,但更改访问数据的方式。列表中的每个元素都是一个包含键的哈希表(其中只有一个键)


工作得非常好。结果就是我想要达到的。非常感谢,解释也很有用。我不明白,我用自己的哈希表创建了一个列表,这是新学到的东西。
$users = Get-ADUser -Filter { employeeNumber -notlike '*' } -Properties memberOf, samAccountName | ForEach-Object -Process { @{ $_.samAccountName = $_.memberOf | Where-Object { $_ -like '*DAT*' } } }
$users.GetEnumerator() |
    Select-Object -Property @{N='AD1';E={$_.Keys[0]}},
    @{N='AD2';E={$_.Values[0]}} |
        Export-Csv -NoTypeInformation -Path H:\test123.csv