lupora
Goto Top

Mit SelectString Text aus .LOG Datei ausgeben

Hallo zusammen,

ich stehe irgendwie auf dem Schlauch. Ich habe ein Skript gebaut das mit Robocopy zwei Ordnerpfade synct.
Danach möchte ich ausgeben wie viel Dateien tatsächlich gesynct wurden. Dafür möchte ich die LOG Datei auswerten die Robocopy erstellt.

$pfad = "C:\Robocopy/logs"  

$ausgabe = Select-String -Path $pfad\*.log -pattern Dateien 

Write-Host $ausgabe[1]

Die LOG Datei wird erfolgreich ausgelesen und die Zeile in der "Dateien" vorkommt wird korrekt ausgegeben.
Da nach meinem Verständnis die Ausgabe ein Array von Strings ist wollte ich einfach den zweiten Array String ausgeben. Da in diesem immer die genaue Zahl der gesyncten Dateien steht. Aber es funktioniert nicht. Wollte mit SPLIT das Array auseinander nehmen, aber folgende Fehlermeldung kommt:
Fehler beim Aufrufen der Methode, da [Microsoft.PowerShell.Commands.MatchInfo] keine Methode mit dem Namen "Split" enthält


So schaut die LOG aus:
           Insgesamt   KopiertšbersprungenKeine šbereinstimmung    FEHLER    Extras
Verzeich.:         9         0         9         0         0         0
  Dateien:        20         0        20         0         0         0
    Bytes:   39.92 m         0   39.92 m         0         0         0
   Zeiten:   0:00:00   0:00:00                       0:00:00   0:00:00
   Beendet: Samstag, 21. November 2020 09:20:15

Jemand Ideen?

Content-Key: 625611

Url: https://administrator.de/contentid/625611

Printed on: April 25, 2024 at 07:04 o'clock

Member: SeaStorm
SeaStorm Nov 25, 2020 at 21:12:19 (UTC)
Goto Top
Hi

$ausgabe = (Select-String -Path $pfad\*.log -pattern Dateien) -split "\s+"  
Member: Lupora
Lupora Nov 25, 2020 at 21:23:07 (UTC)
Goto Top
So nah und so einfach :D

Herzlichen Dank!

Noch eine letzte Frage: Wie kann ich angeben das ich immer den letzten Match im Dokument bekomme?

Ich suche nach dem Wort Dateien. Das kommt 30x vor. Ich hätte gerne das er den letzten Match wegschreibt, den ich dann in ein Array ausgeben kann.
Member: SeaStorm
Solution SeaStorm Nov 25, 2020 at 21:28:06 (UTC)
Goto Top
hi

genau so einfach

(Select-String -Path $pfad\*.log -pattern Dateien)[-1] -split "\s+"  
Member: Lupora
Lupora Nov 25, 2020 at 21:34:15 (UTC)
Goto Top
Hab es so versucht zu lösen:

$ausgabe = (Select-String -Path $logging\$date-BackupSync.log -pattern Dateien) -split "\s+"  
[array]::Reverse($ausgabe)

Hat auch funktioniert, nur ist jetzt wohl gerade irgendwo auf der Welt ein professioneller Powershell Programmierer gestorben :D

Danke für deinen tipp!