需要将输出导出到 csv

Need to export the output to an csv

我正在尝试 运行 下面的代码比较用户和组并确认用户是否是组的成员。但我无法将输出导出到 excel.

    $users = gc .\UserInfo.csv
    $groups = gc .\groupInfo.csv
    $outputFilePath = "C:\Users\salesid.csv"

$members = foreach ($group in $groups) {Get-ADGroupMember -Identity $group -Recursive | Select -ExpandProperty SamAccountName

foreach ($user in $users) {
If ($members -contains $user) {
     $a = write-host "$user is a member of $group"
} Else {
   $a = Write-Host "$user is not a member of $group"
}
}
}

    $a| Export-Csv .\Output.csv -NoTypeInformation
    Read-Host -Prompt "Press Enter to exit"

要输出为可以在 Excel 中打开的 CSV 文件,您需要在循环中输出 objects,而不是字符串:

$users          = Get-Content .\UserInfo.csv
$groups         = Get-Content .\groupInfo.csv
$outputFilePath = "C:\Users\salesid.csv"

# loop through the groups; collect all output in $result
$result = foreach ($group in $groups) {
    $members = Get-ADGroupMember -Identity $group -Recursive | Select-Object -ExpandProperty SamAccountName
    # loop through the users array and outout objects that get collected in variable $result
    foreach ($user in $users) {
        [PsCustomObject]@{
            Group    = $group
            User     = $user
            IsMember = ($members -contains $user)  # True or False in the output
        }
    }
}

$result | Export-Csv -Path $outputFilePath -UseCulture -NoTypeInformation

如果数据量太大而无法在内存中处理,以下代码应该可以工作,但由于所有额外的磁盘写入操作,速度会变慢:

# loop through the groups
foreach ($group in $groups) {
    $members = Get-ADGroupMember -Identity $group -Recursive | Select-Object -ExpandProperty SamAccountName -Unique
    # loop through the users array and outout objects that get collected in variable $result
    foreach ($user in $users) {
        $isMember = "$user is {0}a member of $group" -f $(if ($members -contains $user) {''} else {'NOT '})
        [PsCustomObject]@{
            Group    = $group
            User     = $user
            IsMember = $isMember
        } | Export-Csv -Path $outputFilePath -UseCulture -Append -NoTypeInformation
    }
}

switch -UseCulture 确保分隔符相同 你的 本地 Excel 会理解。这可能是默认的逗号,但也许您的系统使用分号作为 list seoarator