Ich habe eine Anwendung, die eine Protokolldatei mit folgendem Format erstellen:Powershell „Erweitert“ Parsen Komponenten Installationszeit zu berechnen, basierend auf Protokolldatei
2009-03-27 15:30:50 Start
2009-03-27 15:30:51 Starting Component 1 Installation
2009-03-27 15:30:52 blah
2009-03-27 15:30:53 blah
2009-03-27 15:30:54 blah
2009-03-27 15:30:55 ~~~ Finished Component 1 Installation ~~~
2009-03-27 15:30:56 Starting Component 2 Installation
2009-03-27 15:30:57 blah
2009-03-27 15:30:58 blah
2009-03-27 15:30:59 blah
2009-03-27 15:30:60 ~~~ Finished Component 2 Installation ~~~
2009-03-27 15:30:61 Starting Component 3 Installation
2009-03-27 15:30:62 blah
2009-03-27 15:30:63 blah
2009-03-27 15:30:64 blah
2009-03-27 15:30:65 ~~~ Finished Component 3 Installation ~~~
2009-03-27 15:30:66 Finished
Ich denke, man den Punkt des Formats erhalten.
Die Sache, die ich achive wollen, ist ein Powershell-Skript zu haben, die eine Tabelle von Ergebnis zeigt
- Komponentenname
- Startzeit
- Endzeit
- Benötigte Zeit zurück
Ich nenne es "Advance" Skript, weil es wahrscheinlich gehören wird: Parsing, Formatierung, Erstellen neuer Objekte, etc.
- Ich bin ein Neuling in Power
Danke für das Skript (und Entschuldigung für den Fehler auf die Sekunden!). Das Skript funktioniert funktional sehr gut, aber vom Standpunkt der Leistung ist es langsam, können Sie vielleicht vorschlagen, was könnte es schneller machen? –
Nun, das Skript liest die vollständige Protokolldatei und führt dann die Verarbeitung aus. Ich habe es gerade in einem 800 KiB Logfile versucht und der Unterschied zwischen dem ersten Lesen, dem Parsen und dem Ausführen in einer Pipeline ist nicht wahrnehmbar (tatsächlich ist die Pipeline sogar langsamer). Derzeit keine Ahnung, wie man es schneller machen kann – Joey
Die New-Object und Add-Member-Aufrufe machen hier rund die Hälfte der Laufzeit aus. Parsing mit Regex ist offensichtlich die andere Hälfte (Datum/Zeit-Parsing ist nicht bemerkbar). Das Umschreiben ohne Regex wird jedoch nicht sehr spaßig oder lesbar sein. – Joey