BNils 10 Geschrieben 3. Februar 2010 Melden Teilen Geschrieben 3. Februar 2010 (bearbeitet) Hallo, ich habe mal wieder ein Problem mit einer .log file :) Und zwar wollte ich die .log durchgehend mit Get-Content und dem Parameter -Wait auslesen und wenn dann ein bestimmtes Wort auftaucht (z.B.: Quit) soll et etwas machen... Leider funktioniert das mit -match nicht. Get-Content -Path "C:\...\file.log" -Wait -match "Quit" Ich weiß, so kann es auch nicht gehen, weil -match kein Parameter von Get-Content ist, aber irgendwie komme ich auf keine andere Idee. Ich hoffe ihr könnt mir helfen! Gruß Nils EDIT1: Ich habe eine Lösung gefunden... Get-Content -Path "C:\...\file.log -Wait | Select-String -pattern "Quit" EDIT2: Irgendwie klappt das in einer If Abfrage überhaupt nicht... er macht einfach nichts! Wie mache ich das am geschicktesten? bearbeitet 3. Februar 2010 von BNils Zitieren Link zu diesem Kommentar
Dukel 454 Geschrieben 3. Februar 2010 Melden Teilen Geschrieben 3. Februar 2010 get-content ... | ? { $_ -match "Quit"} Zitieren Link zu diesem Kommentar
BNils 10 Geschrieben 3. Februar 2010 Autor Melden Teilen Geschrieben 3. Februar 2010 (bearbeitet) wenn ich das in eine *.ps1 rein mache, das ausführe und dann per script in die log file reinschreibe, passiert nichts. if (Get-Content -Path "C:\Program Files\TEST\Log\test.log" -wait |? {$_ -match "Quit"}) { "Quit gefunden" | Write-Output } else { "nichts gefunden" | Write-Output } Gehe ich das ganze Problem eventuell falsch an? Hier noch mal mein Problem. Ich habe ein file.log, in der ständig der Status einen Programms reingeschrieben wird. Da einige Fehler auftreten können (werden mit z.B.: Quit in der .log dokumentiert), möchte ich quasi in Echtzeit neue Zeile in der .log auswärten. Tritt kein Quit auf, wartet er einfach auf die nächste Zeile. Tritt aber ein Quit auf, muss er einige Befehle ausführen um das Programm neu zustarten! Gruß Nils bearbeitet 3. Februar 2010 von BNils Zitieren Link zu diesem Kommentar
Dukel 454 Geschrieben 3. Februar 2010 Melden Teilen Geschrieben 3. Februar 2010 Die Logdatei muss dauerhaft überwacht werden, bei get-content passiert das einmal. Woher soll das Script die neuen zeilen kennen? Edit: Ahh. Wegen dem Wait. Btw: Get-Content 'C:\Dokumente und Einstellungen\kehler\Eigene Dateien\test.txt' -Wait | % { if($_ -match "Quit") {"Quit gefunden"} else {"Quit nicht gefunden"} } Zitieren Link zu diesem Kommentar
BNils 10 Geschrieben 3. Februar 2010 Autor Melden Teilen Geschrieben 3. Februar 2010 (bearbeitet) Danke, wenn ich das so mache, erkennt er das erste Quit nur, wenn die .log komplett leer ist und dann die quit zeile hinzufüge. Quit gefunden kommt dann noch ein quit in die 2te Zeile, ist das die ausgabe... Quit nicht gefunden Quit nicht gefunden Quit nicht gefunden Warum 3 mal und nicht gefunden verstehe ich nicht... Gruß Nils EDIT: Ich glaube das % bzw $_ wird nicht geleert während das Programm läuft, deswegen verdoppelt sich die ausgabe! Aber wie leert man das zur Laufzeit? bearbeitet 3. Februar 2010 von BNils Zitieren Link zu diesem Kommentar
BNils 10 Geschrieben 4. Februar 2010 Autor Melden Teilen Geschrieben 4. Februar 2010 Ich habe nun ein wenig mit der tail.exe rumgespielt... tail hat ja das -f um die File auf neue Zeilen zu überprüfen, das Problem ist nur, das ich wirklich nur die letzte Zeile brauche. Unter linux klappt das mit tail -1 -f file, leider klappt das unter Windows nicht :( Fehler: TAIL: can't open -f Gibt es da einen Trick? Gruß nils Zitieren Link zu diesem Kommentar
Dukel 454 Geschrieben 4. Februar 2010 Melden Teilen Geschrieben 4. Februar 2010 Bei mir ging das mit der Powershell. % = Foreach() $_ = aktuellen Pipelineobjekt. Hast du nur den Quellcode von mir kopiert und es damit probiert? Zitieren Link zu diesem Kommentar
BNils 10 Geschrieben 4. Februar 2010 Autor Melden Teilen Geschrieben 4. Februar 2010 Bei mir ging das mit der Powershell.% = Foreach() $_ = aktuellen Pipelineobjekt. Hast du nur den Quellcode von mir kopiert und es damit probiert? Ja ich habe deinen Quellcode kopiert. Es gibt aber noch ein anderes Problem mit Get-Content. Es fängt immer wieder von oben an die letzte Zeile zu suchen, also dauert es bei langen log files lange bis er unten angekommen ist und es fehlen dann halt zeilen, die zwischen durch eingefügt wurden. Hast du eine Idee, wie ich das mit tail.exe -f -1 lofgile hinebkommen könnte? Gruß nils Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.