如何使用 GetEnumerator() 将散列 table 导出到 PowerShell 中的 csv 文件?
How to use GetEnumerator() to export hash table to a csv file in PowerShell?
我写了一个搜索功能,搜索一些活动目录属性。我现在想将内容导出到 .csv 文件。如果我没看错的话,整个输出是一个散列table。但是当我尝试使用 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
如果您查看您的代码,您会创建一个哈希列表table,其中包含您的 SamAccountName 和组。但是,当您使用枚举器时,您只考虑散列table 而不是您创建的列表。
这是迭代哈希的方法table。您首先创建一个散列 table 并将所有元素添加到其中。
$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
或者您可以继续使用散列列表table,但更改您访问数据的方式。列表中的每个元素都是一个带有键的散列table(其中只有一个)。
$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
我写了一个搜索功能,搜索一些活动目录属性。我现在想将内容导出到 .csv 文件。如果我没看错的话,整个输出是一个散列table。但是当我尝试使用 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
如果您查看您的代码,您会创建一个哈希列表table,其中包含您的 SamAccountName 和组。但是,当您使用枚举器时,您只考虑散列table 而不是您创建的列表。
这是迭代哈希的方法table。您首先创建一个散列 table 并将所有元素添加到其中。
$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
或者您可以继续使用散列列表table,但更改您访问数据的方式。列表中的每个元素都是一个带有键的散列table(其中只有一个)。
$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