PowerShell导出AD特定分发组至CSV失败求助
解决PowerShell导出AD分发组到CSV无内容的问题
你的脚本有两个关键问题导致无法正确写入CSV:
Export-Csv未接收管道输入:你把查询命令和导出命令分开执行,单独运行Export-Csv时没有传入任何数据对象,自然会提示缺少InputObject参数,无法写入内容。- 未获取Exchange专属属性:
Get-ADGroup默认不会返回primarySmtpAddress(这是Exchange分发组的属性),必须显式指定要获取该属性,否则select-object会输出空值。
修复方案一:合并查询,一次性导出(推荐)
把三个查询条件合并,减少重复操作,同时确保获取到所需属性:
# 一次性查询所有符合条件的AD组,指定获取Exchange的primarySmtpAddress属性 $targetGroups = Get-ADGroup -Filter {Name -like '*prodnotify*' -or Name -like '*devnotify*' -or Name -like '*prod_ops*'} -Properties DisplayName, primarySmtpAddress # 筛选需要的列并导出到CSV $targetGroups | Select-Object DisplayName, primarySmtpAddress | Export-Csv -Path "C:\Users\username\Documents\WindowsPowerShell\CSVs\Test.csv" -Delimiter ";" -NoTypeInformation Write-Host "`nDone. Press any key to exit." $null = $Host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")
修复方案二:保留原查询结构,修正管道连接
如果需要保留三次独立查询的结构,要确保每个查询结果直接通过管道传给Export-Csv:
# 每个查询直接管道到导出命令,确保数据被传递 Get-ADGroup -Filter "Name -like '*prodnotify*'" -Properties DisplayName, primarySmtpAddress | Select-Object DisplayName, primarySmtpAddress | Export-Csv -Path "C:\Users\username\Documents\WindowsPowerShell\CSVs\Test.csv" -Delimiter ";" -Append -NoTypeInformation Get-ADGroup -Filter "Name -like '*devnotify*'" -Properties DisplayName, primarySmtpAddress | Select-Object DisplayName, primarySmtpAddress | Export-Csv -Path "C:\Users\username\Documents\WindowsPowerShell\CSVs\Test.csv" -Delimiter ";" -Append -NoTypeInformation Get-ADGroup -Filter "Name -like '*prod_ops*'" -Properties DisplayName, primarySmtpAddress | Select-Object DisplayName, primarySmtpAddress | Export-Csv -Path "C:\Users\username\Documents\WindowsPowerShell\CSVs\Test.csv" -Delimiter ";" -Append -NoTypeInformation Write-Host "`nDone. Press any key to exit." $null = $Host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")
更适合Exchange Online的方案
既然你已经导入了ExchangeOnlineManagement模块,建议用专门的Exchange命令Get-DistributionGroup,它默认就包含PrimarySmtpAddress属性,无需额外指定:
# 查询Exchange Online中的分发组 $targetGroups = Get-DistributionGroup -Filter {Name -like '*prodnotify*' -or Name -like '*devnotify*' -or Name -like '*prod_ops*'} $targetGroups | Select-Object DisplayName, PrimarySmtpAddress | Export-Csv -Path "C:\Users\username\Documents\WindowsPowerShell\CSVs\Test.csv" -Delimiter ";" -NoTypeInformation Write-Host "`nDone. Press any key to exit." $null = $Host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")
内容的提问来源于stack exchange,提问作者user30059858
相关产品推荐
相关产品推荐

