# created by Jan Kovar # honza@tnx.cz # http://www.tnx.cz/ # $Address = $Null #Zbytecny radek $Mailboxes = Get-CASMailbox -resultsize Unlimited -filter {Activesyncenabled -eq $true} #Chci mailboxy, ktere maji povoleny Active sync $mobily = @{"Unknown" = 0} #Pouzivam hash table, pridavam prvni par "Zadna synchronizace:" > no_sync2010.txt #Vytvarim soubor no_sync2007.txt - uzivatele s povolenym ActiveSyncem, kteri ho nepouzivaji "Zadny deviceuseragent:" > no_agent2010.txt #Vytvarim soubor no_agent2007.txt - uzivatele, kteri pouzili ActiveSync, ale maji prazdne pole DeviceUserAgent $datum = ((get-date).AddDays(-30)) #Vytvarim promenou s datumem pred 30 dny Foreach ($Address in $Mailboxes) #Beru vsechny objekty, ktere mi vratil get-casmailbox ... { #1 start $mbx = get-activesyncdevicestatistics -mailbox $Address.Name #Pro kazdy mailbox s aktivnim AS spoustim dotaz na vsechny zarizeni, ktere se synchronizuji s mbx #Muze to byt i vic radku, resp. zarizeni. If (!$mbx) #Pokud je vysledek prazdny { #2 start $Address.Name >> no_sync2010.txt #Ukladam jmeno uzivatele do souboru. Ma povoleny Active sync, ale nepouzil to. } #2 konec else #Pokud neni vysledek prazdny { #3 start Foreach ($device in $mbx) #Budu zkoumat kazde zarizeni, se kterym synchronizoval { #4 start If ((!$device.LastSyncAttemptTime) -OR ($device.LastSyncAttemptTime -lt $datum)) #Zahazuju vsechny zarizeni, ktere nemaji nejaky #pokus o sychronizaci a nebo je to delsi dobu #nez 30 dni. {} #Takove me nezajimaji else #Zajimaji me jen zarizeni, ktere zkusily komunikovat poslednich 30 dnu. { #5 start If (!$device.DeviceFriendlyName) #Ma zarizeni prazdne DeviceFriendlyName? { #6 start If (!$device.DeviceUserAgent) #Ma prazdne i DeviceUserAgent? { #7 start $index = "Unknown" #Hledam Unknown zarizeni v tabulce $overit = $mobily[$index] #Nactu pocet neznamych zarizeni $overit = $overit + 1 #Prictu jeden kus $mobily[$index] = $overit #Ulozim zpatky do tabulky "Jmeno: " + $Address.Name >> no_agent2010.txt #zapisu jmeno mailboxu do no_agent2010.txt } #7 konec else #Nema prazdny DeviceUserAgent { #8 start $pole = $device.DeviceUserAgent.split("/") #Rozdelim hodnotu DeviceUserAgent podle lomitka do pole $index = $pole[0] #Zajima me jen prvni hodnota $overit = $mobily[$index] #Zjistime, jestli uz mam tento mobil v tabulce If (!$overit) #Pokud ne { #9 start $mobily[$index] = 1 #Pridame novy telefon s poctem 1 do tabulky } #9 konec else #pokud uz existuje { #10 $overit = $overit + 1 #Zvysime pocet o 1 $mobily[$index] = $overit #A zapsat do tabulky } #10 konec } #8 konec } #6 konec else #Co kdyz nema prazdne DeviceFriendlyName? { #11 start $pole = $device.DeviceFriendlyName.split("/") #Rozdelim hodnotu DeviceFriendlyName podle lomitka do pole $index = $pole[0] #Zajima me jen prvni clen $overit = $mobily[$index] #Zjistim jestli ho uz mam v tabulce If (!$overit) #Nemam { #12 start $mobily[$index] = 1 #Ulozim telefon do tabulky s poctem 1 } #12 konec else #Jestli uz tam je. { #13 start $overit = $overit + 1 #Prictu mu 1 $mobily[$index] = $overit #Ulozim } #13 konec } #11 konec } #5 konec } #4 konec } #3 konec } #1 konec $mobily.GetEnumerator() | select key, Value | export-csv devices2010.csv -NoTypeInformation #Ted z hash table udelam objekt, vyberu sloupce a exportuju do csv