Exchange 2016导出邮箱属性:如何获取Imap等服务启用状态?
解决Exchange邮箱协议状态获取问题
原脚本无法获取IMAP、POP、OWA、ActiveSync的启用状态,是因为这些客户端访问配置属性不属于Get-Mailbox的输出字段,需要通过Get-CASMailbox cmdlet来获取相关状态。
修改后的脚本(基础版)
Get-Mailbox -ResultSize Unlimited | Select-Object DisplayName, SamAccountName, PrimarySmtpAddress, @{Name='ImapEnabled'; Expression={(Get-CASMailbox $_.Identity).ImapEnabled}}, @{Name='PopEnabled'; Expression={(Get-CASMailbox $_.Identity).PopEnabled}}, @{Name='OWAEnabled'; Expression={(Get-CASMailbox $_.Identity).OWAEnabled}}, @{Name='ActiveSyncEnabled'; Expression={(Get-CASMailbox $_.Identity).ActiveSyncEnabled}} | Sort-Object PrimarySmtpAddress | Out-GridView
优化性能版(适合大量邮箱环境)
如果邮箱数量较多,多次调用Get-CASMailbox会影响效率,可先批量获取所有CAS配置并存入哈希表,再关联查询:
# 预加载所有CAS邮箱配置到哈希表 $casMailboxes = @{} Get-CASMailbox -ResultSize Unlimited | ForEach-Object { $casMailboxes[$_.Identity] = $_ } # 关联邮箱基础信息与CAS协议状态 Get-Mailbox -ResultSize Unlimited | Select-Object DisplayName, SamAccountName, PrimarySmtpAddress, @{Name='ImapEnabled'; Expression={$casMailboxes[$_.Identity].ImapEnabled}}, @{Name='PopEnabled'; Expression={$casMailboxes[$_.Identity].PopEnabled}}, @{Name='OWAEnabled'; Expression={$casMailboxes[$_.Identity].OWAEnabled}}, @{Name='ActiveSyncEnabled'; Expression={$casMailboxes[$_.Identity].ActiveSyncEnabled}} | Sort-Object PrimarySmtpAddress | Out-GridView
导出CSV说明
将上述脚本中的Out-GridView替换为以下命令即可导出到CSV文件:
Export-Csv -Path "邮箱协议状态汇总.csv" -NoTypeInformation -Encoding UTF8
内容的提问来源于stack exchange,提问作者Gino M
相关产品推荐
相关产品推荐

