paraneus
Goto Top

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:

$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

Content-Key: 274039

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

Printed on: April 24, 2024 at 04:04 o'clock

Mitglied: 114757
Solution 114757 Jun 08, 2015 updated at 15:32:46 (UTC)
Goto Top
$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  
   } 
}
}
Wie wär's mal mit Powershell lernen, bevor du dir hier jetzt jeden Furz zusammenstellen lässt ?

Gruß jodel32
Member: Paraneus
Paraneus Jun 08, 2015 at 14:50:13 (UTC)
Goto Top
Wie wär's mal mit Powershell lernen, bevor du dir hier jetzt jeden Furz zusammenstellen lässt ?

Gruß jodel32

Das war nicht sehr höfflich!
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.
Tut mir leid!!!!
Mitglied: 114757
114757 Jun 08, 2015 updated at 14:54:33 (UTC)
Goto Top
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 face-wink das ham'wer gerne ..
Dann schreib wenigstens drüber powered by Administrator.de
Member: Paraneus
Paraneus Jun 08, 2015 at 14:58:01 (UTC)
Goto Top
naja, und el Cheffe dann falsche Tatsachen vortäuschen face-wink das ham'wer gerne ..
Dann schreib wenigstens drüber powered by Administrator.de

Ich habe ihm nie gesagt das ich's kann.
Ausserdem habe ich um Hilfe gebeten und nicht um das ganze Skript.

Ich versuche immer selbst eine Lösung zu finden, aber wenn ich keine finde frage ich hier nach.

Eigentlich bin ich dir keine Erklärung schuldig.

Ich bitte dich nur solche Kommentare zu lassen und wenn dich so Fragen stören, sie zu ignorieren.
Mitglied: 114757
114757 Jun 08, 2015 updated at 15:03:34 (UTC)
Goto Top
Ruhig Blut my friend ... Bisschen Spaß und Kritik muss hier jeder aushalten face-smile war nicht persönlich ... aber sonst mutiert hier das Forum zum Selbstbedienungsladen.