Exchange是完全依赖于AD的,包括邮箱属性,服务器的架构扩展等。有时候我们会发现,某些员工离职,AD账号已经被禁用,但是他的邮箱依然可用,能够正常收发邮件。可能大家会吐槽,AD账号都禁用了,为什么还能发邮件呢,毕竟都不能登录了嘛。如果这个邮箱有授权给其他人去查看和发送呢?那不就可以收发了嘛。
其实,这也是共享邮箱的实现机制,感兴趣的同学可以去了解一下,什么是共享邮箱哈。
废话不多说,我们一起来看一下如何统计这些AD账号已经被禁用,但是邮箱依然可用的账号吧。打开Exchange shell命令行工具,运行如下命令:
Get-Mailbox-Identity test01 |fl "*Exchange*"
我们看到ExchangeUserAccountControl这个属性值是None,表示Exchange认为他的AD账号是启用的(为啥是表示呢,因为这里有个坑,下面说)。
我们再看看另一个被禁用的账号test02,运行命令如下:
打脸时候来了,为啥禁用的AD账号,依然是None呢,不按套路出牌呀。实际上经过反复测试和查找资料,这里的确是一个坑,不是所有邮箱都会去找AD去重新同步状态信息。你要问我为什么,我只能让你去问微软了,哈哈。
那么如何让邮箱去找AD同步状态信息呢,需要运行如下命令:
Get-Mailbox-Identity test02 |Set-Mailbox
再运行命令看看:
嗯,这下终于跟我们的期望值一样了,不错!
现在归纳一下,如何在邮件服务器上直接统计AD账号禁用的邮箱:
1、让所有账号去找AD同步状态信息
Get-Mailbox -Resultsize unlimited |Set-Mailbox
2、运行完成后,继续运行查找命令
Get-Mailbox -ResultSize Unlimited | ? {$_.UserAccountControl -match “AccountDisabled” -and $_.isLinked -match “false” -and $_.isResource -match “false”} |select-object DisplayName,Alias,Database,ItemCount,TotalItemSize | export-csv c:\disabledwmail.csv
当然可以直接复制到制作为powershell脚本哈。
其实,很多时候我们并不知道这个值可以查看禁用了AD账号的邮箱,我们可以通过绕一点,但是更容易更简单的方式来实现,一起来看下面的脚本
$Users=(Get-Mailbox -ResultSize Unlimited).SAmAccountName
foreach($user in $users) {Get-ADUser -Identity test01 -Properties Enabled |Select-Object Name,Enabled|export-csv C:\\userstatus.csv -encoding utf8}
有人可能觉得这个方法不行,没有筛选出禁用的账号,还要导出来自己手动筛选,很笨。其实很多事情和方法没有对错与好坏,看是否适合自己,想要直接筛选出禁用的账号,也是可以的哈,感兴趣的同学可以自己去研究研究。
分享就到这里,有问题可以随时留言问我。
閱讀更多 一不小心7332789 的文章