Gestern habe ich ja wiedermal einen Artikel zum Thema PowerShell und ActiveSync gepostet. Kurz später kam die Frage was man damit noch so alles machen könnte.
Na ja, es ist “nur” ein PowerShell Snippet! Also kann damit eine Menge gemacht werden :)
Ein nützliches Anwendungsbeispiel: Geräte mit alter Software suchen und die User anschreiben und bitten ein Update einzuspielen!
Suchen wir also mal mal alle iDevices mit einer iOS Version kleiner als 5.0.1 (Also die aktuell neueste):
$Addresses = $Devices | ?{$_.DeviceUserAgent -notlike "*801.306"} | %{$_.Identity.SmtpAddress} | Get-Unique
Das gibt eine Email Liste aus. Wichtig für User (Wie mich) mit mehr als einem Device ist hier natürlich der | Get-Unique! Sonst bekommen diese User mehr als eine Mail ;-)
Diese Liste kann dann einfach direkt aus einem beliebigen Maier angeschrieben werden. Aber Moment: Das geht sich auch direkt aus PowerShell:
# Change the variables to fit your needs and environment.
# variables: Server, Port, Subject, Body and From
# Keep in mind to change the version string to, the actual version is 5.0.1 (801.306)
$Addresses = $Devices | ?{$_.DeviceUserAgent -notlike "*801.306"} | %{$_.Identity.SmtpAddress} | Get-Unique
$SMTPServer = "mailer.hochwald-it.local"
$SMTPPort = 25
$Subject = "Please Update your iDevice"
$Body = "You should update your iDevice as soon as possible."
$From = "mobile.support@hochwald-it.local"
#
# Send an e-mail to each e-mail address in $Addresses
$Addresses | % {
$Mail = (New-Object System.Net.Mail.smtpclient($SMTPserver, $SMTPport))
$Mail.Send($From, $_, $Subject, $Body)
$Mail = $null
}
Der aktuell Version String kann jeweils auf dem Exchange Server abgefragt werden. Oder wenn du selbst das aktuellste Device hast in deinem Outlook Web Access (ECP).
Eine komplette Anleitung ztu den ActiveSync Befehlen der Powershell sind auf der TechNet website zu finden.