PowerShell查询AD组时如何将同组用户合并为单单元格多行显示
修改后的完整代码
# 筛选名称包含abc的AD组 $Groups = Get-ADGroup -Filter 'name -like "*abc*"' $Results = foreach ($Group in $Groups) { # 收集当前组的所有成员名称,可按需添加过滤只保留用户 $memberNames = Get-ADGroupMember -Identity $Group | Where-Object ObjectClass -eq 'user' | Select-Object -ExpandProperty Name # 单个组对应一条记录,用户用换行符拼接 [pscustomobject]@{ Group = $Group.Name Users = $memberNames -join "`n" } } # 控制台输出,加-Wrap参数才能显示单元格内换行 $Results | Format-Table -Wrap # 导出为CSV,指定UTF8编码避免乱码 $Results | Export-Csv -Path C:\abc_search.csv -NoTypeInformation -Encoding UTF8
调整说明
- 核心逻辑优化:不再逐一生成成员对应的对象,改为按组收集所有成员后拼接为单条记录,保证每个组仅占一行
- 如果需要生成HTML格式的表格,将
-join "n"替换为-join "
"`即可实现单元格内换行的效果 - 如果不需要过滤组内嵌套组,可删除
Where-Object ObjectClass -eq 'user'这段过滤逻辑 - 导出CSV后用Excel打开时,若要正常显示换行,选中Users列按
Alt+Enter即可触发换行识别,也可以将拼接符改为逗号等分隔符提升兼容性
内容的提问来源于stack exchange,提问作者user10568257
相关产品推荐
相关产品推荐

