Partnerschaft alter Mobilgeräte automatisch löschen

Im Laufe der Zeit hat sich die Anzahl der mobilen Endgeräte der Benutzer stark verändert. Mittlerweile besitzt ein Benutzer nicht nur ein Smartphone, sondern auch ein Tablet und gegebenenfalls weitere Geräte auf denen er seine E-Mails mobil lesen kann. Für jedes Gerät welches mit dem Exchange Server synchronisiert wird muss eine Partnerschaft angelegt werden. Die maximale Anzahl der Partnerschaften wird durch die Throttling-Policy festgelegt, Standard sind hier 10 Geräte pro Benutzer. Ist für einen Benutzer der maximale Wert an Partnerschaften erreicht so kann er keine neuen Geräte synchronisieren und er erhält am Gerät eine (ggf. nicht aussagekräftige 🙂 ) Fehlermeldung während der Einrichtung. Durch den häufigen Wechsel der Geräte kann dieser Wert ziemlich schnell erreicht werden.

Der Benutzer kann über Outlook Web App in der Exchange Verwaltung (ECP) seine Geräte verwalten und dort ggf. auch löschen. Doch dies wissen leider die wenigsten und somit bleibt diese Aufgabe meistens beim Administrator hängen und dieser muss veraltete Gerätepartnerschaften löschen. Ein anderer Weg wäre die Anzahl der maximalen Parnterschaften in der dafür verantwortlichen Throttling-Policy zu erhöhen, wie in folgendem Artikel beschrieben wird: MSExchange.org: Throttling-Policy. Letztendlich verzögert man dadurch aber nur das eigentliche Problem und schafft keine dauerhafte Lösung. Exorbitant hohe Werte, wie z.B. 10000 Geräte, sind nicht ratsam, da hierdurch die Verwaltbarkeit der Mobilgeräte nicht mehr gegeben ist.

Ein weitaus eleganterer Weg ist die Partnerschaft älterer Mobilgeräte automatisch per Powershell-Skript zu löschen. Hierbei werden alle Partnerschaften überprüft, wann die letzte erfolgreiche Synchronisierung stattgefunden hat. Überschreitet diese einen konfigurierbaren Zeitraum, so wird die Partnerschaft automatisch durch das Skript gelöscht. Folgendes Skript soll einen Ansatz dazu liefern, wie man diese Aufgabe automatisieren kann:


Add-PSSnapin Microsoft.Exchange.Management.PowerShell.E2010 -Erroraction: silentlycontinue

$check = $false
$ts = (Get-Date).AddMonths(-2)

$devices = Get-ActiveSyncDevice | Get-ActiveSyncDeviceStatistics | Where {$_.LastSuccessSync -lt $ts}

$message = “Folgende Geräte wurden seit dem ” + $ts.ToShortDateString() +” nicht synchronisiert und wurden deshalb gelöscht: `n`r`n`r”

foreach ($device in $devices)
{

$check = $true
$user = $device.Identity.Split(“/”)

$message += “Gerät : ” + $device.DeviceFriendlyname + “`n`r”
$message += “Letzer Kontakt : ” + $device.LastSuccessSync + “`n`r”
$message += “Idenität : ” + $user[$user.Count-3] + “`n`r`n`r”

Remove-ActiveSyncDevice -Identity $device.Identity -Confirm:$false

}

if ($check)
{
Send-MailMessage -From “activesynccleanup@domain.tld” -To “exadmins@domain.tld” -Subject “Es wurden veraltete ActiveSync-Geräte bereinigt” -Body  $message.Replace(“`n”,””) -SmtpServer localhost -Encoding Default
}


Über die Variable $ts wird der Wert in Monaten festgelegt, welcher überschritten werden muss, damit eine Partnerschaft automatisch entfernt wird. Anschließend werden alle Mobilgeräte gesucht, deren letzte Synchronisierung den festgelegten Zeitraum überschreiten. In einer Schleife über diese wird die Nachricht aus den Gerätedaten gebildet und die Partnerschaft entfernt. Zum Abschluss werden die Admins per E-Mail über die erfolgte Bereinigung informiert.

Das obige Skript kann entweder manuell oder automatisiert per geplanten Task ausgeführt werden. Sollte durch das Skript eine Partnerschaft gelöscht werden, die noch benötigt wird, z.B. weil der Mitarbeiter das IPad nur selten nutzt, ist dies kein Problem, denn bei erneuter Synchronisierung wird die Partnerschaft wieder neu angelegt.

Hinweis: Die Powershell-BefehleGet-ActiveSyncDevice, Get-ActiveSyncDeviceStatistics und Remove-ActiveSyncDevice werden in Exchange Online und Exchange 2016 durch Get-MobileDevice, Get-MobileDeviceStatistics und Remove-MobileDevice ersetzt. Mehr Informationen hier: Microsoft Technet. Sollten Sie also eine dieser genannten Versionen verwenden, so müssen Sie die Befehle im Skript durch die Neuen ersetzen.