Frage ist gelöstInformationen aus ASCII Datei auslesen und weiterverarbeiten mit Powershell
10.01.2012
17:19:35 Uhr643 Aufrufe
1 Antwort
17:19:35 Uhr
1 Antwort
Noch nicht bewertet
Schönen Guten Abend
Ich möchte meine Papenheimer hier überwachen und schreibe dazu ein Script, welches das ActiveSync Log auswerten soll und alle jene anzeigt, die Mails synchronisieren. Kontakte und Kalender sind ok, aber eben keine Mails... da sich dies nicht separat sperren lässt, müssen wir den Mitarbeitern vertrauen, das sie nicht auch Mails synchronisieren. Leider hat sich gezeigt, das vertrauen nicht genug ist, so das eine Kontrolle notwendig wird.
Habe nun herausgefunden, das bei Mailsynchronisation via ActiveSync auf dem Exchange ein Eintrag im Log generiert wird und habe die in Frage kommenden Zeilen (sind ja nur noch wenige) in eine neue Logdatei geschrieben.
Ich möchte meine Papenheimer hier überwachen und schreibe dazu ein Script, welches das ActiveSync Log auswerten soll und alle jene anzeigt, die Mails synchronisieren. Kontakte und Kalender sind ok, aber eben keine Mails... da sich dies nicht separat sperren lässt, müssen wir den Mitarbeitern vertrauen, das sie nicht auch Mails synchronisieren. Leider hat sich gezeigt, das vertrauen nicht genug ist, so das eine Kontrolle notwendig wird.
Habe nun herausgefunden, das bei Mailsynchronisation via ActiveSync auf dem Exchange ein Eintrag im Log generiert wird und habe die in Frage kommenden Zeilen (sind ja nur noch wenige) in eine neue Logdatei geschrieben.
Nun gehts darum diese neue Logdatei mit dem AD abzugleichen um herauszufinden, welche nicht berechtigten User schummeln.
Brauche dazu eure Hilfe:
Hier 2 Zeilen aus meiner Ascii Datei:
Was mich nun aus der Datei interessiert ist das Datum zu Beginn der Zeile und der Username mit der Domain. Den Usernamen möchte ich dann mit einer AD Gruppe abgleichen, so das berechtigte User nicht angezeigt werden.
Hilfe brauche ich aber erstmal nur für den Teil, mit dem ich via Powershell zu Datum und Uhrzeit und Username komme. Den Rest such ich dann selber weiter. Hab mir auch ein Buch bestellt zum Thema, aber vielleicht hat ja einer sowas schon gemacht??
Besten Dank für eure Hilfe!
T Holzwurm
Brauche dazu eure Hilfe:
Hier 2 Zeilen aus meiner Ascii Datei:
01.
2012-01-09 17:17:21 10.0.x.y POST /Microsoft-Server-ActiveSync/default.eas User=ambrosis&DeviceId=Appl77777777&DeviceType=iPhone&Cmd=Sync&Log=V140_Fc1_Fid:21_Ty:Em_Filt2_St:S_Sk:1289577099_Sst7_SsCmt7_Srv:1a0c0d0s0eA0sd_BR1_BPR0_LdapC2_LdapL312_RpcC26_RpcL46_Pk585510728_S1_As:AllowedG_Mbx:mailserver.domain.net_Dc:DC1.domain.net_Throttle0_Budg(A)Conn%3a0%2cHangingConn%3a0%2f%2PC%3a%24null%2f%24null%2f0%25%2cFC%3a1000%2f0%2cPolicy%3aDefaultThrottlingPolicy%5F5b6fc680-86c1-4ba8-809c-60182f7e8de0%2cNorm_ 443 domain-ag\ambrosis 10.0.x.y Apple-iPhone4C1/901.405 200 0 0 390 02.
2012-01-09 17:21:30 10.0.x.y POST /Microsoft-Server-ActiveSync/default.eas Cmd=Sync&DeviceId=BA7FCB7103&DeviceType=WP&Log=V140_Fc3_Fid:19_Ty:Em_Filt3_St:R_Sk:1796167908_Sst4_SsCmt4_Srv:1a0c0d0s0e0sd_BR1_BPR0_Fid:7_Ty:Ca_Filt4_St:S_Sk:1441586711_Sst53_SsCmt53_BR1_BPR0_Fid:8_St:S_Sk:145344363_LdapC5_LdapL625_RpcC50_RpcL187_Pk818513548_S1_As:AllowedG_Mbx:mailserver.domain.net_Dc:DC1.domain.net_Throttle0_Budg(A)Conn%3a0%2cHangingConn%3a0%2cAD%3a%24null%2f%24null2cRPCull2f%24null%2f025%2cFC%3a1000%2f0%2cPolicy%3aDefaultThrottlingPolicy%5F5b6fc680-86c1-4ba8-809c-60182f7e8de0%2cNorm_&Translated=T 443 domain-ag\brosis 10.0.x.y - 200 0 0 1078Was mich nun aus der Datei interessiert ist das Datum zu Beginn der Zeile und der Username mit der Domain. Den Usernamen möchte ich dann mit einer AD Gruppe abgleichen, so das berechtigte User nicht angezeigt werden.
Hilfe brauche ich aber erstmal nur für den Teil, mit dem ich via Powershell zu Datum und Uhrzeit und Username komme. Den Rest such ich dann selber weiter. Hab mir auch ein Buch bestellt zum Thema, aber vielleicht hat ja einer sowas schon gemacht??
Besten Dank für eure Hilfe!
T Holzwurm
HolzwurmCH schreibt am 17.01.2012 um 11:16:33 Uhr
Falls es jemanden interessiert:
Die Auswertung funktioniert sowohl mit IPhone's wie auch mit Windows Mobile Smartphones
Ist die Userliste leer, werden halt alle User angezeigt die via Exchange ActiveSync EMails synchronisieren...
Gruss
Holzwurm
01.
# Januar 2012 02.
03.
# Definieren von Konstanten 04.
# Domänenname 05.
$aDomainName = "mydomainname" 06.
# Textdatei mit Kürzel der Berechtigten Usern 07.
$UserListFile = "C:\Scripts\UserListAllowedMailSync.txt" 08.
# Evtl. Pfadänderungen im Makro anpassen! 09.
10.
# Userliste der berechtigten User erstellen 11.
# Beispiel 1 mit einer Distributiongroup: Liefert leider nur ausgeschriebene Namen und keine Kürzel 12.
# Beispiel 2 mit AD Abfrage: Dies funktioniert wohl nur auf einem DC mit Windows 2008 R2 (nicht getestet) 13.
# Beispiel 3: Die User werden aus einer Textdatei gelesen (nur Kürzel ohne Domainnamen verwenden) 14.
# $UserList = Get-DistributionGroupMember -Identity "Exchange-ActiveSync-Users" 15.
# $UserList = Get-ADGroupMember -Identity "Exchange-ActiveSync-Users" -recursive 16.
$UserList = Get-content $UserListFile 17.
# Write-Output $UserList 18.
19.
20.
# Vortagesdatum wird zusammengestellt 21.
$a = Get-Date 22.
$b = $a.AddDays(-1) 23.
$b = $b.Day 24.
$c = $a.Month 25.
$d = $a.Year 26.
$a = Get-Date "$b/$c/$d" -uformat "%y%m%d" 27.
28.
# Verzeichnis und Pfad der täglichen IIS Logdateien 29.
$filepath = "C:\inetpub\logs\LogFiles\W3SVC1\u_ex$a.log" 30.
Write-Output $filepath 31.
32.
# Alle Einträge wo Mails synchronisiert wurden, werden aussortiert (über den Suchtext "Ty:Em") 33.
# und in einer neuen Logdatei gespeichert 34.
$LogFileName = "c:\Scripts\Reports\ControlEMailSync$a.log" 35.
select-string -path $filepath -pattern "Ty:Em" -casesensitive | ForEach-Object {$_.Line} > $LogFileName 36.
37.
# Aus der neuen Logdatei interessieren uns der Name des Users und der Zeitpunkt der Synchronisation 38.
$dateiinhalt = Get-content $LogFileName 39.
$iAll = 0 40.
$iNotAllowed = 0 41.
# Dateiinhalt Zeilenweise durchgehen 42.
$dateiinhalt | Foreach-Object { $iAll++; 43.
# Das Datum und die Zeit stehen in die ersten 16 Zeichen 44.
$aDatum = $_.Substring(0,16); 45.
# Der User muss gesucht werden, beginnt aber in jedem Fall mit dem Domain Namen 46.
$aUser = $_.Substring($_.IndexOf($aDomainName),35); 47.
# Hier wird der Username von dem restlichen Text getrennt 48.
$aDomainl = $aDomainName.length + 1 49.
$aPos = $aUser.IndexOf(" ")-$aDomainl 50.
$aUser = $aUser.Substring($aDomainl,$aPos); 51.
52.
# Ausgabe der nicht Berechtigten User 53.
if ($UserList -notcontains $aUser) {$iNotAllowed++; Write-Output "$aDatum $aUser"} 54.
} 55.
56.
Write-warning "Anzahl Synchronisationen unberechtigter User: $iNotAllowed" 57.
Write-warning "Anzahl Synchronisationen Total: $iAll"Die Auswertung funktioniert sowohl mit IPhone's wie auch mit Windows Mobile Smartphones
Ist die Userliste leer, werden halt alle User angezeigt die via Exchange ActiveSync EMails synchronisieren...
Gruss
Holzwurm






