PS - RegEx: Logfile mit aktuellem Datum filtern + Mehrere Pfade unter einer Variable
Hallo Zusammen
Ich habe ein Powershell Skript in dem ich Logfiles kopiere.
Nun möchte ich nur das neuste Logfile in ein anderes Verzeichnis kopieren.
Ich habe mir überlegt das mit RegEx zu machen.
Jedoch habe ich das Problem, dass ich bei RegEx nur allgemein nach einem Datum filtern kann und nicht nach dem aktuellen.
Weiter stellt sich das Problem, dass das Skript während dem Kopiervorgang Änderungen im File vornehmen muss, aber eben nur in den aktuellen Logfiles.
Ausserdem muss ich die Logfiles aus 12 Ordner holen, welche auf 4 Server verteilt sind. Sprich 3 Ordner auf jeweils 4 Server. Die Pfade zu den 3 Ordner sind grundsätzlich gleich, einzig der Servername am Pfadanfang ist anders. Kennt ihr eine Lösung bei der ich nur eine Variable für diese 12 Verzeichnisse benötige?
Die Logfiles heissen jeweils: u_exyymmdd.log
Das Skript sieht aktuell wie folgt aus:
Habt ihr eine Idee wie ich das lösen könnte?
LG Paraneus
Ich habe ein Powershell Skript in dem ich Logfiles kopiere.
Nun möchte ich nur das neuste Logfile in ein anderes Verzeichnis kopieren.
Ich habe mir überlegt das mit RegEx zu machen.
Jedoch habe ich das Problem, dass ich bei RegEx nur allgemein nach einem Datum filtern kann und nicht nach dem aktuellen.
Weiter stellt sich das Problem, dass das Skript während dem Kopiervorgang Änderungen im File vornehmen muss, aber eben nur in den aktuellen Logfiles.
Ausserdem muss ich die Logfiles aus 12 Ordner holen, welche auf 4 Server verteilt sind. Sprich 3 Ordner auf jeweils 4 Server. Die Pfade zu den 3 Ordner sind grundsätzlich gleich, einzig der Servername am Pfadanfang ist anders. Kennt ihr eine Lösung bei der ich nur eine Variable für diese 12 Verzeichnisse benötige?
Die Logfiles heissen jeweils: u_exyymmdd.log
Das Skript sieht aktuell wie folgt aus:
$pathLogIN = 'C:\temp\test'
$outpath = 'C:\temp\test2'
#$Date = Get-Date -Format yyMMdd
$log = [regex]::match('u_ex(19|20)[0-9]{2}[-](0[1-9]|1[012])[-](0[1-9]|[12][0-9]|3[01]).log$')
#Logfiles umbenennen, Inhalt ändern (Username) und kopieren
gci $pathLogIN -Filter '*.log' | %{
$content = gc $_.FullName | out-string
$server = [regex]::match($content,'(?im)^\d{4}-\d{2}-\d{2} [^\s]+ [^\s]+ ([^\s]+)').Groups[1].Value
$app = [regex]::match($content,'(?i)(kollaboration|MeineStartseite|spstd)').Groups[1].Value
$app = $app.Substring(0,1).ToUpper() + $app.Substring(1)
$outfile = "$outpath\$($_.BaseName)-$server-$app$($_.Extension)"
if (!(Test-Path $outfile)){
$content -replace 'global\\([a-zA-Z0-9]{3})[a-zA-Z0-9]*','$1' | out-file $outfile
}
}
Habt ihr eine Idee wie ich das lösen könnte?
LG Paraneus
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 274039
Url: https://administrator.de/forum/ps-regex-logfile-mit-aktuellem-datum-filtern-mehrere-pfade-unter-einer-variable-274039.html
Ausgedruckt am: 18.04.2025 um 17:04 Uhr
5 Kommentare
Neuester Kommentar

$servers = @('\\Server1','\\Server2','\\Server3')
$subpath = '\c$\temp\test'
$outpath_newest = 'C:\temp\newest'
$servers | %{
#Logfiles umbenennen, Inhalt ändern (Username) und kopieren
gci "$($_)$subpath" -Filter '*.log' | sort LastWriteTime -Desc | select -First 1 | %{
$content = gc $_.FullName | out-string
$server = [regex]::match($content,'(?im)^\d{4}-\d{2}-\d{2} [^\s]+ [^\s]+ ([^\s]+)').Groups[1].Value
$app = [regex]::match($content,'(?i)(kollaboration|MeineStartseite|spstd)').Groups[1].Value
$app = $app.Substring(0,1).ToUpper() + $app.Substring(1)
$outfile = "$outpath_newest\$($_.BaseName)-$server-$app$($_.Extension)"
if (!(Test-Path $outfile)){
$content -replace 'global\\([a-zA-Z0-9]{3})[a-zA-Z0-9]*','$1' | out-file $outfile
}
}
}
Gruß jodel32

Wir haben ein Projekt, welches morgen bei der Geschäftsleitung vorgeführt wird.
Nun habe kurzerhand diesen Auftrag erhalten und mir ist es nicht möglich PS innert einem Tag zu lernen.
naja, und el Cheffe dann falsche Tatsachen vortäuschen Nun habe kurzerhand diesen Auftrag erhalten und mir ist es nicht möglich PS innert einem Tag zu lernen.
Dann schreib wenigstens drüber powered by Administrator.de

Ruhig Blut my friend ... Bisschen Spaß und Kritik muss hier jeder aushalten
war nicht persönlich ... aber sonst mutiert hier das Forum zum Selbstbedienungsladen.