ActiveSync Leichen

Eher zufällig habe ich mal wieder ein "Get-MobileDevice" auf meinem alten On-Premises Server gemacht und war erstaunt, dass meinem Postfach noch Mobilgeräte zugeordnet waren. Und das wo mein Postfach doch schon lange in Exchange Online ist. Da musste ich dann doch noch mal genauer nachschauen.

Dieses Fehlverhalten ist Microsoft bekannt und in einer zukünftigen Version des MRS (Mailbox Replication Service) korrigiert werden. Bis dahin können Sie weiter mein Skript nutzen.

Get-MobileDevice

Dieses Commandlet löst das mittlerweile abgekündigte "Get-ActiveSyncDevice" ab und generiert eine Liste der mobilen Geräte, die ihrem Exchange Server bekannt sind. Dabei handelt es sich nicht mehr nur um die reinen "ActiveSync"-Partnerschaften. Es gibt auch andere Partnerschaften, z.B.: auf Basis von REST oder die "Outlook for Android" oder "Outlook for IOS"-Apps. Die Funktion ist sowohl für Exchange OnPremises als auch Exchange Online verfügbar.

Über den Parameter "-mailbox" kann ich die Ausgabe auch auf genau einen Benutzer beschränken. Da meine Mailbox aber schon in Exchange Online ist, findet das Commandlet bei mir natürlich nichts mehr:

Aber ich kann natürlich auch "nachträglich" filtern.

[PS] C:\>Get-MobileDevice | ? {$_.UserDisplayName -eq "netatwork.de/Abteilung/Technik/Carius, Frank"} | ft name

Name
----
WindowsMail§74E4E6B4B0A54D5868EE273DA9E8A371
WP8§CB7411FB16A806AA97B899EE8B7AF440
Outlook§6A04BD027438964D
TestActiveSyncConnectivity§1017200971
Outlook§A2FC79D2D57744CF
Android§android1441184316434
WP8§7D8C810231A79DBCED48F227BB330390
Android§android1415442986709
iPhone§4KGQP16GIH3JVB8GP5BN3ILNT0
WP8§9C2C7744CF106A1354A32122237FA609

Das ist deutlicher Hinweis, dass das Commandlet nicht auf eine Information im Postfach zugreift, sondern die Daten aus dem Active Directory abruft. Das habe ich auf der Seite EAS AD-Objekte beschrieben.

Der Blick ins AD

Ich habe daher mit ADSIEDIT einfach meinen AD-Benutzer im lokalen Active Directory analysiert und dort die alten Einträge gefunden.

Diese Daten werden nicht durch ADSync in die Cloud repliziert aber wurden auch nicht durch die Migration in die Cloud aktualisiert oder entfernt.

Cleanup mit Hindernissen

Die Aufräumaktion muss ich also manuell durchführen. Gesucht werden einfach alle Partnerschaften, zu denen es kein Postfach gibt und löscht diese

foreach ($device in (Get-MobileDevice)) {
   if (get-mailbox -identity $device.userdisplayname -erroraction silentlycontinue) {
      write-host "Valid Partnership found for user $($device.userdisplayname)"
   }
   else {
      write-host "Orphaned Partnership found for user $($device.userdisplayname)"
      remove-mobiledevice -identity $device.deviceid -confirm:$false -verbose
   }
}

Leider habe ich da die Rechnung ohne den Wirt gemacht, denn "Remove-MobileDevice" prüft vorher ab, ob es eine passende Mailbox gibt und bricht in meinem Falle dann ab:

In dem Fall bleibt also nur die Entfernung des Objekts per PowerShell und AD-Commandlets

foreach ($device in (Get-MobileDevice)) {
   if (get-mailbox -identity $device.userdisplayname -erroraction silentlycontinue) {
      Write-Host "Valid Partnership found for user $($device.userdisplayname)"
   }
   else {
      Write-Host "Orphaned Partnership found for user $($device.userdisplayname)"
      Write-Host "Remove $($device.distinguishedname)"
      remove-ADObject -identity $device.distinguishedname-confirm:$false -verbose
   }
}

Damit werden die Elemente dann direkt im Active Directory entfernt:

Genau genommen könnte ich auch per LDAP direkt nach den Objekten suchen und nach über das LDAP-Feld msExchRemoteRecipientType und insbesondere msExchRemoteRecipientType die Benutzer finden, die kein Postfach mehr haben.

In der Situation macht es natürlich auch keinen Sinn die Geräte vorher erst mit einem "Clean-MobileDevice" löschen zu lassen. Das funktioniert nur, wenn das Gerät noch einmal synchronisiert. In meinem Beispiel ist das Gerät aber gar nicht mehr lokal sondern mit der Cloud verbunden.

Weitere Links