使用PowerShell的Get-ADGroup命令导出用户邮箱地址时遇错求助
问题分析与解决
你报错的核心原因:AD组对象本身没有EmailAddress属性,你在Get-ADGroup的-Properties参数里指定这个不存在的属性,系统找不到对应字段,所以执行失败。而且你要获取的是用户的邮箱地址,这个属性属于AD用户对象,并非组对象。
下面是修正后的脚本,可正确导出用户邮箱地址及所需信息:
$ou = 'distinguishedName of my OU' Get-ADGroup -Filter * -SearchBase $ou -Properties Description | ForEach-Object { $currentGroup = $_ # 仅处理组内的用户成员,排除嵌套组、计算机等非用户类型 Get-ADGroupMember $currentGroup | Where-Object { $_.objectClass -eq 'user' } | ForEach-Object { # 获取用户对象的邮箱属性(Get-ADGroupMember返回的用户对象默认不含邮箱) $user = Get-ADUser $_ -Properties EmailAddress [pscustomobject]@{ SamAccountName = $user.SamAccountName Name = $user.Name EmailAddress = $user.EmailAddress GroupName = $currentGroup.Name GroupDescription = $currentGroup.Description } } } | Export-Csv C:\Users\Me\Desktop\MyFile.csv -NoTypeInformation
关键修正说明:
- 删除了
Get-ADGroup中无效的EmailAddress属性请求 - 新增过滤逻辑,只处理组内的用户成员,避免无效数据
- 通过
Get-ADUser主动获取用户的EmailAddress属性,补全Get-ADGroupMember返回对象缺失的字段 - 调整组描述的字段名为
GroupDescription,避免和用户自身的描述字段混淆(若需保留原字段名可自行修改)
内容的提问来源于stack exchange,提问作者S.Mahmood
相关产品推荐
相关产品推荐

