
Ein Kunde wollte ein wenig Statistik über seine per Exchange Server ActiveSync angebundenen mobilen Geräte. Geendet ist es in einem kleinen PowerShell Script:
$SnapInCheck = Get-PSSnapin | ? Name -Match "Microsoft.Exchange.Management.PowerShell.SnapIn"
if(-not $SnapInCheck){
$SnapInRegistered = Get-PSSnapin -Registered | ? Name -Match "Microsoft.Exchange.Management.PowerShell.SnapIn"
if($SnapInRegistered){
try{
Add-PSSnapin $SnapInRegistered.Name -ErrorAction Stop
$AllSystemsReady = $true
} catch{
$Exception = $_.Exception
$AllSystemsReady = $false
}
}
}
if($AllSystemsReady){
foreach($MobileDevice in Get-MobileDevice | Sort-Object UserDisplayName){
$MobileDeviceStatistics = Get-MobileDeviceStatistics $MobileDevice
Write-Host $("Name: " + $($MobileDevice.UserDisplayName.Split("/")[$MobileDevice.UserDisplayName.Split("/").Length-1]))
Write-Host $("Friendly Name: " + $($MobileDevice.FriendlyName))
Write-Host $("Device Name: " + $($MobileDevice.DeviceType))
Write-Host $("Device Model: " + $($MobileDevice.DeviceModel))
Write-Host $("Device Status: " + $MobileDeviceStatistics.Status)
Write-Host $("Letzer Sync-Versuch: " + $MobileDeviceStatistics.LastSyncAttemptTime.ToLongDateString())
Write-Host $("Letzer Sync: " + $MobileDeviceStatistics.LastSuccessSync.ToLongDateString())
Write-Host `n
}
}
Unterm Strich mache ich mir die beiden PowerShell CMDlets Get-MobileDevice und Get-MobileDeviceStatistic zu nutze und durchlaufe damit eine kleine Schleife, welche die Informationen „stumpf“ ausgibt. Generell könnte man den Output hier noch ein wenig mit einem CSV Export pimpen oder alte verwaiste Exchange Server ActiveSync Geräte entsorgen.

hi!
Die erste Abfrage, ob das Snapin geladen ist, beinhaltet nicht den Fall das dass Snapin geladen ist 😉
Dann ist die Variable $AllSystemsReady leer.
Ich hab das gelöst per:
else{
$AllSystemsReady = $true
}
Moin,
danke für den Hinweis. Der Post bräuchte generell mal ein Update oder eine Korrektur. Das Snap-In nachladen ist so gesehen nicht supported bzw. funktionieren da nicht alle CMDlets: https://docs.microsoft.com/en-us/exchange/troubleshoot/administration/cmdlets-fail-powershell-ise
Besser direkt per PS-Session mit dem Exchange verbinden: https://docs.microsoft.com/en-us/powershell/exchange/connect-to-exchange-servers-using-remote-powershell?view=exchange-ps
Gruß
Jan