Jump to content

Get-Content und -Wait...


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

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 von BNils
Link zu diesem Kommentar

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 von BNils
Link zu diesem Kommentar

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 von BNils
Link zu diesem Kommentar
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

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...