Exch2010 – 为没有activesyncdevice的设备删除ActiveSyncAllowedDeviceIDs

我有多个ActiveSyncAllowedDeviceIDs的用户,他们只有一个ActiveSyncDevice伙伴关系。 注意android-deviceid是一个真正的手机,testdevicepleaseignore是过去与设备伙伴关系被删除的设备。

[PS] C:\Windows\system32>Get-ActiveSyncDevice -Mailbox username UserDisplayName : org.local/Sites/IT Department/Users/Firstname Lastname DeviceAccessState : Allowed DeviceAccessStateReason : Individual Name : Android§android-deviceid DistinguishedName : CN=Android§android-deviceid,CN=ExchangeActiveSyncDevices,CN=Firstname Lastname,OU=Users,OU=IT Department,OU=Sites,DC=org,DC=local Identity : org.local/Sites/IT Department/Users/Firstname Lastname/ExchangeActiveSyncDevices/Android§android-deviceid ObjectCategory : org.local/Configuration/Schema/ms-Exch-Active-Sync-Device ObjectClass : {top, msExchActiveSyncDevice} [PS] C:\Windows\system32>Get-CASMailbox username | fl EmailAddresses : {SIP:[email protected], smtp:[email protected], SMTP:[email protected]} PrimarySmtpAddress : [email protected] SamAccountName : username DisplayName : Firstname Lastname ActiveSyncAllowedDeviceIDs : {testdevicepleaseignore, android-deviceid} ActiveSyncBlockedDeviceIDs : {} ActiveSyncMailboxPolicy : Default DistinguishedName : CN=Firstname Lastname,OU=Users,OU=IT Department,OU=Sites,DC=org,DC=local Identity : org.local/Sites/IT Department/Users/Firstname Lastname ObjectCategory : org.local/Configuration/Schema/Person ObjectClass : {top, person, organizationalPerson, user} 

问题是,如果我在控制台中删除某个设备的配对(或者为此清除设备),则不会将其从ActiveSyncAllowedDeviceIDs中删除,而且用户可以重新添加该设备,而不必进入隔离区。

刚刚写了一个快速和肮脏的PowerShell来做到这一点。 可以使用一些关于如何加快速度的build议:

这是我刚想出来的一种</s> and和肮脏的方式。 它需要永远(因为它遍历每个设备),但它做的工作。

 $casmbxs = Get-CASMailbox -ResultSize unlimited foreach ($casmbx in $casmbxs){ foreach ($asdevid in $casmbx.ActiveSyncAllowedDeviceIDs){ $asdev = get-activesyncdevice | where {$_.DeviceID -eq $asdevid} if (!$asdev) { write-host "Removing " $asdevid " from " $casmbx.Identity Set-CASMailbox -Identity $casmbx.Identity -ActiveSyncAllowedDeviceIDs @{REMOVE=$asdevid} } } } 

build议如何加快你的PS:

 $casmbxs = Get-CASMailbox -ResultSize unlimited foreach ($casmbx in $casmbxs){ $username = [String]$casmbx.SamAccountName foreach ($asdevid in $casmbx.ActiveSyncAllowedDeviceIDs){ $asdev = get-activesyncdevice -Mailbox $username | where {$_.DeviceID -eq $asdevid} if (!$asdev) { write-host "Removing " $asdevid " from " $casmbx.Identity Set-CASMailbox -Identity $casmbx.Identity -ActiveSyncAllowedDeviceIDs @{REMOVE=$asdevid} } } } 

无需遍历所有ActiveSync设备,只有与您正在处理的用户邮箱有关的设备。