出于 Exchange Online 安全加固的考虑,近日我们在讨论禁用 Exchange Online 邮箱的 ActiveSync 协议事宜。

但一般企业的环境中会有数以万计的邮箱用户,逐个地禁用他们的邮箱可能是相当繁琐的,除非你有足够的时间和体力,以及耐心,或者你的 leader 正好是你的小舅子。

好在我们有万能的 PowerShell,它可以将我们从无聊地重复劳动中美解救出来。因此,要一键禁用你的组织里 Exchange Online 邮箱的 ActiveSync,你只需先连接到 Exchange Online PowerShell,然后执行以下命令即可:

Get-Mailbox -ResultSize unlimited | where {$_.recipienttypedetails -eq "UserMailbox"} | Set-CasMailbox -ActiveSyncEnabled $False

这时头发少的朋友可能会问了,那新增的邮箱怎么办?这些邮箱创建时 ActiveSync 协议是自动开的。

幸运的是,我们有此前定期批量禁用 OWA 的脚本。只需花两秒钟的时间对它进行一个简单的魔改,即可实现定期批量禁用 ActiveSync。方法如下:

首先,我们使用 PowerShell 导出一份管理员账户的凭据到 C:\Temp,命令如下:

Read-Host -Prompt "Please Enter the Password" -AsSecureString | ConvertFrom-SecureString | Out-File "C:\Temp\Cred.txt"

然后,我们再来创建这样一份 ps1 文件,代码示例如下:

$userName = "tianbaob@irabit.org"
$password = Get-Content "C:\Temp\Cred.txt" | ConvertTo-SecureString
$cred = New-Object System.Management.Automation.PSCredential -ArgumentList ($userName, $password)
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Authentication Basic -Credential $cred -AllowRedirection
Import-PSSession $Session
Get-Mailbox -ResultSize unlimited | where {$_.recipienttypedetails -eq "UserMailbox"} | Set-CasMailbox -ActiveSyncEnabled $False

这个 ps1 文件跑起来的效果大概是这样的:

图像

最后,我们再参考这篇微软官方文档把它添加到 Windows 计划任务。

不用谢。