如何用PowerShell批量读取用户列表并导出AD组归属信息?
PowerShell批量查询AD用户组归属实现方案
当然可以实现批量查询,下面是具体的操作步骤和脚本:
一、先修正用户列表生成命令(可选但推荐)
你之前生成userlist.txt的命令会导出带表头的内容,后续读取时容易出错,建议改用以下命令生成纯用户名列表:
Get-ADUser -Filter * -Properties Name | Select-Object -ExpandProperty Name | Out-File -FilePath .\userlist.txt -Encoding utf8
Select-Object -ExpandProperty Name:直接提取用户名文本,避免表头干扰-Encoding utf8:防止中文用户名出现乱码
二、批量查询脚本
创建以下PowerShell脚本,执行后会自动读取用户列表、查询组归属并保存结果:
# 读取用户列表,过滤空白行 $userList = Get-Content -Path .\userlist.txt | Where-Object { $_ -match '\S' } # 初始化结果存储容器 $outputResults = @() foreach ($userName in $userList) { # 查询AD用户对象及所属组属性 $adUser = Get-ADUser -Filter { Name -eq $userName } -Properties MemberOf if ($adUser) { # 将组的DN转换为可读的组名 $groupNames = $adUser.MemberOf | Get-ADGroup | Select-Object -ExpandProperty Name # 构造结构化结果 $resultItem = [PSCustomObject]@{ 用户名 = $userName 所属AD组 = $groupNames -join ';' # 多个组用分号分隔 } } else { # 处理未找到的用户 $resultItem = [PSCustomObject]@{ 用户名 = $userName 所属AD组 = "未在Active Directory中找到该用户" } } $outputResults += $resultItem } # 导出结果为CSV文件(推荐,方便Excel打开编辑) $outputResults | Export-Csv -Path .\AD用户组归属查询结果.csv -Encoding utf8 -NoTypeInformation # 若需要文本格式,可替换为以下命令 # $outputResults | Format-Table -AutoSize | Out-File -Path .\AD用户组归属查询结果.txt -Encoding utf8
三、注意事项
- 确保运行脚本的机器已安装Active Directory模块(域控制器默认自带,普通机器需安装RSAT工具)
- 执行脚本的账号需要具备Active Directory的查询权限
- 如果用户名包含特殊字符,脚本中的Filter写法已做适配,无需额外调整
内容的提问来源于stack exchange,提问作者SzaBee
相关产品推荐
相关产品推荐

