如何修改PowerShell脚本实现AD用户组CSV单用户单行导出
修改PowerShell脚本实现AD用户所属组单行导出
原脚本会为每个用户的每个组生成一行记录,要实现每个用户一行、所有组放在同一单元格(换行分隔),可以按以下方式修改脚本:
修改后的完整脚本
Get-Content "C:\Automation Scripts\users.txt" | Get-ADUser | ForEach-Object { $user = $_ # 获取用户所有所属组的名称,用换行符拼接成单个字符串 $groupList = (Get-ADPrincipalGroupMembership $user).SamAccountName -join "`r`n" # 为每个用户创建唯一的输出对象 [PSCustomObject]@{ User = $user.SamAccountName Group = $groupList } } | Export-Csv "C:\Automation Scripts\User_Groups.csv" -NoTypeInformation -Encoding UTF8
关键修改说明
- 替换多对象生成为单对象:
原脚本通过$groups | %{ New-Object ... }为每个组生成一个独立对象,导致一个用户对应多行。现在改为直接将所有组名用-join "rn"拼接成带换行的字符串,每个用户仅生成一个输出对象。 - 简化对象创建语法:
用[PSCustomObject]替代New-Object PSObject,语法更简洁易读,是PowerShell 3.0+推荐的写法。 - 添加编码参数(可选但推荐):
增加-Encoding UTF8参数,避免导出CSV时因编码问题出现乱码,确保换行符在Excel等工具中能正常显示。
执行修改后的脚本后,导出的CSV会符合你要求的格式:每个用户占一行,Group单元格内的所有组以换行分隔。
内容的提问来源于stack exchange,提问作者Empty Coder
相关产品推荐
相关产品推荐

