PowerShell批量导出IT前缀AD组成员到CSV遇类型转换错误如何解决
PowerShell 批量查询IT_前缀AD组成员报错问题解决
错误原因
Get-ADGroup使用Name -like "IT_*"过滤时返回的是AD组对象数组,而Get-ADGroupMember的-Identity参数仅支持单次传入单个AD组标识(单个组对象/组名/组GUID等),不支持直接传入数组,因此触发类型转换报错。
修复方案
遍历所有查询到的AD组,逐个查询组成员,同时通过计算属性补充GroupName字段即可,完整可运行代码如下:
# 查询所有前缀为IT_的AD组 $itGroups = Get-ADGroup -Filter "Name -like 'IT_*'" # 遍历每组查询成员,拼接输出字段 $output = foreach ($group in $itGroups) { Get-ADGroupMember -Identity $group | Select-Object ` name, @{Name = 'GroupName'; Expression = { $group.Name }}, distinguishedName, objectClass, objectGUID, SamAccountName, SID } # 导出结果到CSV,指定UTF8编码避免乱码 $output | Export-Csv -Path "C:\自定义路径\IT组成员清单.csv" -Encoding UTF8 -NoTypeInformation
补充说明
如果存在成员数超过5000的超大AD组,Get-ADGroupMember会触发超限报错,可将Get-ADGroupMember部分替换为以下写法绕过限制:
Get-ADObject -Filter "memberOf -eq '$($group.DistinguishedName)'" | Select-Object ` name, @{Name = 'GroupName'; Expression = { $group.Name }}, distinguishedName, objectClass, objectGUID, SamAccountName, SID
内容的提问来源于stack exchange,提问作者dmbr
相关产品推荐
相关产品推荐

