Exchange Online排序LastLogonTime降序时出现标识不唯一错误
问题原因
报错是因为你的Exchange Online环境中存在DisplayName为"sales"的重复邮箱对象(比如用户主邮箱+对应存档邮箱、同名共享邮箱等)。流式执行命令时(不加Sort),PowerShell处理一个输出一个,未触发标识冲突;但添加Sort后,PowerShell需要先收集所有对象再排序,此时重复的DisplayName导致Get-MailboxStatistics无法匹配唯一邮箱,进而抛出错误。
解决建议
方法1:过滤重复类型的邮箱(如存档邮箱)
如果重复对象是存档邮箱,可在获取邮箱时直接过滤:
Get-Mailbox -ResultSize Unlimited -Filter { RecipientTypeDetails -ne "MailboxArchive" } | Get-MailboxStatistics | Select-Object DisplayName, LastLogonTime | Sort-Object LastLogonTime -Descending
方法2:用唯一标识获取邮箱统计
通过邮箱全局唯一的MailboxGuid来获取统计信息,彻底避免标识混淆:
Get-Mailbox -ResultSize Unlimited | ForEach-Object { Get-MailboxStatistics -Identity $_.MailboxGuid } | Select-Object DisplayName, LastLogonTime | Sort-Object LastLogonTime -Descending
方法3:先缓存结果再排序
先把所有统计数据存入变量,再执行排序,规避管道流式处理的潜在问题:
# 预获取并缓存所有邮箱统计数据 $mailboxStats = Get-Mailbox -ResultSize Unlimited | Get-MailboxStatistics | Select-Object DisplayName, LastLogonTime # 对缓存数据排序输出 $mailboxStats | Sort-Object LastLogonTime -Descending
排查重复邮箱(可选)
先定位重复DisplayName的具体邮箱,确认重复对象类型:
Get-Mailbox -ResultSize Unlimited | Where-Object { $_.DisplayName -eq "sales" } | Select-Object DisplayName, UserPrincipalName, RecipientTypeDetails
内容的提问来源于stack exchange,提问作者fr0stbyt3
相关产品推荐
相关产品推荐

