Powershell: Select-String erzeugt nicht das gewünschte Ergebnis
Hallo Zusammen,
ich suche schon seit zwei Tagen, komme aber leider nicht auf die Lösung.
Ich würde gerne folgenden Befehl (bisher über Command-Line erzeugt):
in mein PowerShell - Script übernehmen.
Hierfür habe ich Folgendes in mein Script eingefügt:
Die Ausgabe mit dem Powershell-Befehl "Select-String" erzeugt aber leider nicht das gewünschte Ergebnis.
Ausgabe mit TYPE und FIND:
Ausgabe mit SELECT-STRING...:
Hat Einer von Euch eine Idee, was hier "falsch" läuft und warum das Leerzeichen als Zeilenumbruch interpretiert wird.
Vielleicht muss ich aber auch "nur" einen anderen Befehl nutzen. Mir sind leider alle Ideen ausgegangen und auch alle meine Versuche sind leider fehlgeschlagen.
Vielen Dank für jede Idee, die mich auf den Weg zur Lösung meines "Problems" unterstützen kann.
Willi
ich suche schon seit zwei Tagen, komme aber leider nicht auf die Lösung.
Ich würde gerne folgenden Befehl (bisher über Command-Line erzeugt):
type 30-07-17_LOG.txt | find /i "REPORT" >> REPORT_AUSWERT.log
in mein PowerShell - Script übernehmen.
Hierfür habe ich Folgendes in mein Script eingefügt:
Select-String -path "30-07-17_LOG.txt" -pattern "REPORT" | Out-File REPORT_AUSWERT.txt
Die Ausgabe mit dem Powershell-Befehl "Select-String" erzeugt aber leider nicht das gewünschte Ergebnis.
Ausgabe mit TYPE und FIND:
REPORT C:\DATA\DATA 1\DATA 2\REPORT.RPT
Ausgabe mit SELECT-STRING...:
REPORT C:\DATA\DATA
1\DATA 2\REPORT.RPT
Hat Einer von Euch eine Idee, was hier "falsch" läuft und warum das Leerzeichen als Zeilenumbruch interpretiert wird.
Vielleicht muss ich aber auch "nur" einen anderen Befehl nutzen. Mir sind leider alle Ideen ausgegangen und auch alle meine Versuche sind leider fehlgeschlagen.
Vielen Dank für jede Idee, die mich auf den Weg zur Lösung meines "Problems" unterstützen kann.
Willi
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 344920
Url: https://administrator.de/forum/powershell-select-string-erzeugt-nicht-das-gewuenschte-ergebnis-344920.html
Ausgedruckt am: 07.04.2025 um 20:04 Uhr
7 Kommentare
Neuester Kommentar
Du hast Recht, in der Zieldatei sind zusätzliche CRs und LFs enthalten. In der Quelldatei gibt es diese aber nicht.
Na in der Zieldatei ist klar. Meine Frage bezog sich natürlich auf die Quelldatei ...Gibt es eventuell eine Zeilenlängenbegrenzung mit dem Get-String Befehl bei der Ausgabe?
https://msdn.microsoft.com/en-us/powershell/reference/5.0/microsoft.powe ...
Allerdings müsste laut dem o.g. Artikel die Ausgabe anders aussehen:
By default, Select-String finds the first match in each line and, for each match, it displays the file name, line number, and all text in the line containing the match.
Deine Ausgabe ist da anders ...Edit:
Und wenn ich das bei mir teste, dann ist dem auch so.
Bsp.:
select-string -path "C:\Users\XYZ\Desktop\WindowsUpdate.log" -pattern "Error"
C:\Users\XYZ\Desktop\WindowsUpdate.log:16833:2017.07.30 15:29:13.6861407 3020 8208 ComApi 0BCC.2010::07/30/2017-15:29:13.686 [comapi]Install call complete (succeeded = 1, succeeded with errors = 0, failed= 0, cancelled = 0, unaccounted = 0
Dateipfad : Zeilennummer : Die Zeile mit dem TrefferAlso, warum ist das bei Dir komplett anders? Was verschweigst Du?
Aha.
Zu Deiner Rehabilitation
muss ich anmerken, dass er es auch bei mir umbricht. 
Das habe ich nicht gleich gemerkt. Allerdings erst nach 160 Zeichen.
160 Zeichen ist die Breite, welche ich für meine CMD voreingestellt habe. Also im Fester der Eingabeaufforderung links oben das Icon, Kontextmenü, Eigenschaften, Layout, Breite ...
Passt das zu Deiner Ausgabe?
Zu Deiner Rehabilitation
Das habe ich nicht gleich gemerkt. Allerdings erst nach 160 Zeichen.
160 Zeichen ist die Breite, welche ich für meine CMD voreingestellt habe. Also im Fester der Eingabeaufforderung links oben das Icon, Kontextmenü, Eigenschaften, Layout, Breite ...
Passt das zu Deiner Ausgabe?
Die erzeugte Datei muss ich mit Get-Content weiterverarbeiten. Das klappt aber so leider nicht.
Das kannst Du einfacher haben und damit scheint es zu funktionieren:Statt erst in eine Datei zu speichern und diese dann wieder einzulesen, kannst direkt in eine Variable speichern:
$Lines = Select-String -path "30-07-17_LOG.txt" -pattern "REPORT"