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

Geschrieben (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 von BNils
Geschrieben (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 von BNils
Geschrieben

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"}
}

Geschrieben (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 von BNils
Geschrieben

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

Geschrieben
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

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...