andreas.al

Serverlog mi Hilfe der Powershell auswerten

Hallo zusammen,
mit der Powershell kenne ich mich bisher nur bedingt aus..

Folgendes Problem: Ich habe eine Logdatei, die ich gerne Ausgewertet haben möchte.

Die Statistik soll in etwa so aussehen:
Datum | Name | Aufrufe
07.05.2018 | EE | 68
07.05.2018 | EEV | 99
07.05.2018 | BIP | 73
08.05.2018 | EE | 61 usw.

Logdatei-Auszug:
2018-04-30 07:53:43 10.102.4.84 GET /EE/doku.php [...Rest uninteressant]
2018-04-30 07:53:43 10.102.4.84 GET /EEV/lib/exe/indexer.php [...Rest uninteressant]

Kann man das so einfach in der Powershell realisieren?

Wenn ja, würde ich mich riesig über einen Schnipsel freuen! face-smile
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 373265

Url: https://administrator.de/forum/serverlog-mi-hilfe-der-powershell-auswerten-373265.html

Ausgedruckt am: 28.04.2025 um 17:04 Uhr

136037
Lösung 136037 07.05.2018 aktualisiert um 13:55:21 Uhr
Goto Top
Bidö
$log = 'C:\datei.log'  
[regex]::Matches((gc $log -raw),'(?ism)^([\d\-]+).*?/([^/]+)').Captures | group {"$($_.Groups[1].Value) $($_.Groups[2].Value)"} | %{[pscustomobject]@{Datum=(get-date $_.Group.Groups[1].Value).ToShortDateString();Name=$_.Group.Groups[2].Value;Aufrufe=$_.Count}}  
Andreas.AL
Andreas.AL 07.05.2018 um 14:40:13 Uhr
Goto Top
Also, ich bin echt begeistert von so viel Kompetenz!
Vielen Dank!
Andreas.AL
Andreas.AL 04.07.2018 um 14:46:15 Uhr
Goto Top
Kriegst du noch folgende Erweiterung/Verbesserung hin?

In dem Logdatei-Auszug gibt es verschiedene Zeitstempel (im Beispiel 07:53:43 und 07:55:21 ).
So kann es vorkommen, dass es mehrere gleiche Zeitstempel gibt, die aber nur einmal gezählt werden sollen.

Beispiel Logdatei-Auszug:

2018-04-30 07:53:43 10.102.4.84 GET /EE/doku.php [...Rest uninteressant]
2018-04-30 07:53:43 10.102.4.84 GET /EE/doku.php [...Rest uninteressant]
2018-04-30 07:53:43 10.102.4.84 GET /EE/doku.php [...Rest uninteressant]
2018-04-30 07:55:21 10.102.4.84 GET /EEV/lib/exe/indexer.php [...Rest uninteressant]
2018-04-30 07:55:21 10.102.4.84 GET /EEV/lib/exe/indexer.php [...Rest uninteressant]

So wird im Moment zu EE "3" ausgegeben, zu EEV "2".
Da es ja eigentlich nur 2 Aufrufe sind, müsste ausgegeben werden: EE 1 und EEV 1

Zur Lösung habe ich mir überlegt, die Zeitstempel zu vergleichen und doppelte zu ignorieren
(WENN nächster Zeitstempel == aktueller Zeitstempel DANN gehe zum nächsten Zeitstempel)

Kriege das mit RegEx aber nicht hin.. face-sad