如何使用GetEnumerator()将哈希表导出到PowerShell中的csv文件?
我编写了一个搜索函数,用于搜索某些active directory属性。我现在想将内容导出到.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
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