如何从对象规范名称获取用户主体名称(UPN)
解决方案
完全可以实现,GrantSendOnBehalfTo 属性返回的是对象的可分辨名称(DN),你只需要通过DN查询对应账户的UPN属性,就能直接生成UPN数组,分两种场景给出可用脚本:
1. 本地AD/本地Exchange环境(已安装ActiveDirectory模块)
# 提取共享邮箱的SendOnBehalf权限项DN列表 $dNList = (Get-Mailbox -Identity SharedMailbox1).GrantSendOnBehalfTo # 遍历DN查询AD用户提取UPN,过滤无效对象 $upnArray = $dNList | ForEach-Object { $adUser = Get-ADUser -Identity $_ -ErrorAction SilentlyContinue if ($adUser) { $adUser.UserPrincipalName } }
执行完成后$upnArray就是你需要的UPN数组,可直接调用。
2. Exchange Online环境(无需本地AD模块)
# 提取共享邮箱的SendOnBehalf权限项DN列表 $dNList = (Get-EXOMailbox -Identity SharedMailbox1).GrantSendOnBehalfTo # 遍历DN查询Exchange收件人提取UPN,过滤已删除/失效对象 $upnArray = $dNList | ForEach-Object { $recipient = Get-EXORecipient -Identity $_ -ErrorAction SilentlyContinue if ($recipient) { $recipient.UserPrincipalName } }
你输出列表中Terminated路径下的离职用户如果已经从AD/Exchange中删除,上述脚本的错误忽略逻辑会自动跳过这些无效项,避免执行报错。
内容的提问来源于stack exchange,提问作者MWH
相关产品推荐
相关产品推荐

