Hallo zusammen
Da ich noch ein bisschen unerfahren in Powershell bin bräuchte ich eure Hilfe..
Die Ausgangslage ist so ich bin ein Azubi in einer mittelgrossen Firma in der Microsoft-Server-Abteilung und jetzt bekam ich den Auftrag bei einem Powershell-Script einen bestimmten Teil zu automatisieren.
Bei besagtem Script geht es darum die Anzahl aller Handy's in der Firma herauszufinden und diese der richtigen OS-Version zuzuweisen, schlussendlich sollte die Anzahl aller OS-versionen die es in der Firma gibt herauskommen.
Jetzt ist es so das bis jetzt die OS-Versionen von Hand, in Form von Variabeln, eingetippt werden mussten.
$iOS6.6 = 0
Jetzt sollte ich diesen Teil mit der Hilfe eines Hashtable automatisieren, so das sich eine neue OS-Version automatisch, bei jedem Durchlauf, hinzufügt.
$îOSHasttable = @{}
Jetzt habe ich das so weit, das es bei jedem Durchlauf alle OS-Versionen in die leere Hashtable geschrieben werden und es dann bei jedem Handy schaut welche OS-Version es hat und es dementsprechend bei der gleichen OS-Version im hashtable den Wert um eins erhöht.
Mein Problem ist jetzt das die OS-Versionen so in die Hashtable geschrieben werden: iOS 7.0.4 11B554a
ich bräuchte es eher in diesem Format: iOS 7.0.4*
Falls sich da jemand mal das Script anschauen und einen Weg finden könnte wie man das im Format iOS 7.0.4* darstellen kann, ware ich sehr froh...
Hier noch das Script:
$s = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://srv00832/powershell -Authentication Kerberos Import-PSSession $s -EA SilentlyContinue $Zaehler = 0 $iPhoneiOS = 0 $AppleGeraete = 0 $iPhoneHashiOS = @{} [Array]$ADUser = Get-CASMailbox -ResultSize 25 | Where {$_.HasActiveSyncDevicePartnership -eq $TRUE} foreach ($User in $ADUser) { $Zaehler++ $AcSyDeStatisticList = Get-ActiveSyncDeviceStatistics -Mailbox $($User.SamAccountName) foreach ($AcSyDeStatistic in $AcSyDeStatisticList) { $LastSyncTime = $($AcSyDeStatistic.LastSuccessSync) If ($LastSyncTime -ne $null) { $LastSyncDiff = $LastSyncTime - $(Get-Date) If ($LastSyncDiff -gt $Zeitraum){ if (($($AcSyDeStatistic.DeviceOS) -eq $null) -and ($($AcSyDeStatistic.DeviceUserAgent) -like "Apple*")){$iPhoneiOS++} if ($($AcSyDeStatistic.DeviceUserAgent) -like "Apple*"){$AppleGeraete++} ForEach($KeyName in @($AcSyDeStatistic.DeviceOS)) { $iPhoneHashiOS.$KeyName = 0 $iPhoneHashiOS.key.Remove((Where-Object -Like "Windows*")) } foreach ($key in [object[]]$iPhoneHashiOS.Keys){ if($AcSyDeStatistic.DeviceOS -like $key){ $iPhoneHashiOS[$key]++ } } } } } }
P.S Eine andere Möglichkeit wäre auch noch in der Hashtable schon die OS-Versionen vordefiniert zu haben und dann wärend dem Durchlauf die neuen OS-Versionen hinzuzufügen
$s = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://srv00832/powershell -Authentication Kerberos Import-PSSession $s -EA SilentlyContinue $Zaehler = 0 $iPhoneiOS = 0 $AppleGeraete = 0 $iPhoneHashiOS = @{"iOS 6.0*" = 0; "iOS 6.1*" = 0; "iOS 6.1.1*" = 0; "iOS 6.1.2*" = 0; "iOS 6.1.3*" = 0; "iOS 7.0*" = 0; "iOS 7.0.2*" = 0; "iOS 7.0.3*" = 0; "iOS 7.0.4*" = 0; "iOS 7.1*" = 0} [Array]$ADUser = Get-CASMailbox -ResultSize 5 | Where {$_.HasActiveSyncDevicePartnership -eq $TRUE} foreach ($User in $ADUser) { $Zaehler++ $AcSyDeStatisticList = Get-ActiveSyncDeviceStatistics -Mailbox $($User.SamAccountName) foreach ($AcSyDeStatistic in $AcSyDeStatisticList) { $LastSyncTime = $($AcSyDeStatistic.LastSuccessSync) If ($LastSyncTime -ne $null) { $LastSyncDiff = $LastSyncTime - $(Get-Date) If ($LastSyncDiff -gt $Zeitraum){ $AcSyDeStatistic.DeviceOS if ($AcSyDeStatistic.DeviceOS -notlike $iPhoneHashiOS){ForEach($KeyName in @($AcSyDeStatistic.DeviceOS)){$iPhoneHashiOS.$KeyName = 0}} if (($($AcSyDeStatistic.DeviceOS) -eq $null) -and ($($AcSyDeStatistic.DeviceUserAgent) -like "Apple*")){$iPhoneiOS++} if ($($AcSyDeStatistic.DeviceUserAgent) -like "Apple*"){$AppleGeraete++} foreach ($key in [object[]]$iPhoneHashiOS.Keys){ if ($AcSyDeStatistic.DeviceOS -like $key){ $iPhoneHashiOS[$key]++ } } } } } }
Gruss Dominique
iOS 7.0.4 11B554a
Dominique Hofmann