Wort in Text-Datei finden und Zeile in anderer Datei Speichern
Hallo zusammen,
ich bin neu hier und und noch kein wirklicher PowerShell Profi. Daher benötige ich etwas Hilfe bei einem kleinen Script:
Ich möchte das Word" failed" oder "error" in der zuletzt erstellten Datei mit Endung *.log eines bestimmten Ordners finden und alle die gefundenen Zeilen komplett als Line in eine neue Text Datei speichern.
Aktuell habe ich das hier, aber wirft mir noch zu viele Fehler aus
Vielleicht kann mir jemand helfen?
Danke vorab
ich bin neu hier und und noch kein wirklicher PowerShell Profi. Daher benötige ich etwas Hilfe bei einem kleinen Script:
Ich möchte das Word" failed" oder "error" in der zuletzt erstellten Datei mit Endung *.log eines bestimmten Ordners finden und alle die gefundenen Zeilen komplett als Line in eine neue Text Datei speichern.
Aktuell habe ich das hier, aber wirft mir noch zu viele Fehler aus
$filenames = Get-ChildItem -Path C:\LOG\ | Where-Object {$_.LastWriteTime -gt (Get-Date).date} {$_.Extension -eq '.log'}
$destination = "C:\Test\done.txt"
$hits = select-string -Path C:\Log\ $filenames -SimpleMatch 'failed','error'
$filecontents = get-content $filenames
foreach($hit in $hits)
{
$filecontents[$hit.linenumber-1]| out-file -append $destination
"" |out-file -append $destination
}
Vielleicht kann mir jemand helfen?
Danke vorab
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 6335480847
Url: https://administrator.de/forum/wort-in-text-datei-finden-und-zeile-in-anderer-datei-speichern-6335480847.html
Ausgedruckt am: 02.04.2025 um 19:04 Uhr
3 Kommentare
Neuester Kommentar
Hallo,
ich bin ja sonst kein Fan von ChatGPT aber gerade für solche Schnipsel nutze ich das Tool selber gerne.
Ich weiß aktuell zu wenig über Powershell um sowas selbst zu schreiben aber weiß den Output zu interpretieren.
Nach Bedarf anpassen und ein bisschen testen.
Gruß
ich bin ja sonst kein Fan von ChatGPT aber gerade für solche Schnipsel nutze ich das Tool selber gerne.
Ich weiß aktuell zu wenig über Powershell um sowas selbst zu schreiben aber weiß den Output zu interpretieren.
# Den Pfad zum Ordner, in dem nach der zuletzt erstellten *.log-Datei gesucht wird, setzen
$LogFolderPath = "C:\Pfad\Zum\Ordner"
# Die neueste *.log-Datei im Ordner finden
$NewestLogFile = Get-ChildItem -Path $LogFolderPath -Filter *.log | Sort-Object LastWriteTime -Descending | Select-Object -First 1
# Wenn eine *.log-Datei gefunden wurde
if ($NewestLogFile) {
# Den Inhalt der Datei laden
$LogFileContent = Get-Content -Path $NewestLogFile.FullName
# Die Zeilen mit "failed" oder "error" filtern
$FailedOrErrorLines = $LogFileContent | Where-Object { $_ -match "failed|error" }
# Wenn mindestens eine entsprechende Zeile gefunden wurde
if ($FailedOrErrorLines) {
# Eine neue Textdatei im Ordner erstellen, um die gefundenen Zeilen zu speichern
$OutputFilePath = Join-Path -Path $LogFolderPath -ChildPath "FailedOrErrorLines.txt"
New-Item -ItemType File -Path $OutputFilePath -Force | Out-Null
# Die gefundenen Zeilen in die Ausgabedatei schreiben
$FailedOrErrorLines | Out-File -FilePath $OutputFilePath -Encoding utf8
}
}
Nach Bedarf anpassen und ein bisschen testen.
Gruß

Get-ChildItem -Path "C:\LOG" -File -Filter *.log | sort LastWriteTime -Desc | select -First 1 | select-string -Pattern 'error','failed' -SimpleMatch | select -Expand Line | set-content "C:\Test\done.txt"