在脚本中添加邮件别名列的问题求助
解决Entra ID用户导出CSV时代理地址列为空的问题
问题根源
MG Graph API查询用户时,默认不会返回ProxyAddresses属性,所以直接调用$user.ProxyAddresses会得到空值。另外,即使获取到该属性,它属于数组类型,直接存入CSV会显示异常,需要做格式转换。
修复步骤
- 显式请求ProxyAddresses属性
调用Get-MgUser时必须通过-Property参数指定包含ProxyAddresses,否则API不会返回该字段:
$users = Get-MgUser -All -Property GivenName, Surname, UserPrincipalName, Mail, ProxyAddresses
- 转换数组为CSV友好格式
将ProxyAddresses数组转为逗号分隔的字符串,避免CSV中显示为System.String[]:
$userObject = [PSCustomObject]@{ "First name" = $user.GivenName "Last name" = $user.Surname "User principal name" = $user.UserPrincipalName "Email address" = $user.Mail "AdditionalSMTPAddresses" = ($user.ProxyAddresses -join ", ") }
完整可用代码片段
# 获取包含代理地址的所有Entra ID用户 $users = Get-MgUser -All -Property GivenName, Surname, UserPrincipalName, Mail, ProxyAddresses # 遍历用户构建导出数据 $exportData = foreach ($user in $users) { [PSCustomObject]@{ "First name" = $user.GivenName "Last name" = $user.Surname "User principal name" = $user.UserPrincipalName "Email address" = $user.Mail "AdditionalSMTPAddresses" = ($user.ProxyAddresses -join ", ") } } # 导出到CSV文件 $exportData | Export-Csv -Path "EntraIDUsers.csv" -NoTypeInformation -Encoding UTF8
内容的提问来源于stack exchange,提问作者Darrell Mee
相关产品推荐
相关产品推荐

