Datei auslesen mit wert aus einer liste vergleichen und wegschreiben
Hallo zusammen,
ich versuche zeilenweise aus eine Datei die im Zugriff durch eine DB ist den letzten Eintag auszulesen und mit den Werten in suche-1 zu vergleichen, bei übereinstimmung die ganze Zeile in eine Datei zuschreiben. Sollte ich nicht lieber mit dem diesen Befehl bei einer geöffnet Datei arebiten , wenn die Datei bereits im Zugriff ist?
OpenAsTextStream([IOMode As IOMode = ForReading], [Format As Tristate = TristateFalse]) As Textstream
Grüße
[Edit Biber] Codeformatierung [/Edit]
ich versuche zeilenweise aus eine Datei die im Zugriff durch eine DB ist den letzten Eintag auszulesen und mit den Werten in suche-1 zu vergleichen, bei übereinstimmung die ganze Zeile in eine Datei zuschreiben. Sollte ich nicht lieber mit dem diesen Befehl bei einer geöffnet Datei arebiten , wenn die Datei bereits im Zugriff ist?
OpenAsTextStream([IOMode As IOMode = ForReading], [Format As Tristate = TristateFalse]) As Textstream
Grüße
# Start-FileSystemWatcher der Powershell
import-module FileSystem
get-help Start-FileSystemWatcher
set suche-1= (importfile; exportfile; DB02; error;)
# String durchsuchen
$Pattern="suche1"
$LineCounter=0
$NumberOfLines=$(get-content -path "D:\db02.log").count
Get-Content -path "D:\db02.log" -Wait | ForEach{
$LineCounter+=1
If(($_ -match $Pattern) -and ($Linecounter -gt $NumberOfLines)){
Set-Content "d:\tag_meldungen.txt" -Value "$_"
# in Datei schreiben
}
}
[Edit Biber] Codeformatierung [/Edit]
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 182189
Url: https://administrator.de/contentid/182189
Ausgedruckt am: 22.11.2024 um 15:11 Uhr
7 Kommentare
Neuester Kommentar
ahoi,
Leider komme ich nicht mit deiner Erklärung nicht ganz klar. am besten schickst du mal 3-4 zeilen aus deinen logfile und 3-4 zeilen aus deiner Fehlercodeliste.
Und damit ich weiss wie das Ergebnis aussehen auch hier 1-2 Beispiele. Danach schauen wir mal was daraus gebastelt werden kann.
der Torsten ohne 'h'
Leider komme ich nicht mit deiner Erklärung nicht ganz klar. am besten schickst du mal 3-4 zeilen aus deinen logfile und 3-4 zeilen aus deiner Fehlercodeliste.
Und damit ich weiss wie das Ergebnis aussehen auch hier 1-2 Beispiele. Danach schauen wir mal was daraus gebastelt werden kann.
der Torsten ohne 'h'
Ich bins wieder!
so das hier sollte funkitionieren
den Debugbereich kannst auskommentieren und das Script direkt mit den Parametern aufrufen
Bsp.: .\get-db2errors.ps1 -Fehlerliste .\known-errors.csv -DB2log .\db2.log -outfile .\errors.log
und nun ab ins WE
der Torsten
ps.: die csv sollte wie folgt aussehen
so das hier sollte funkitionieren
den Debugbereich kannst auskommentieren und das Script direkt mit den Parametern aufrufen
Bsp.: .\get-db2errors.ps1 -Fehlerliste .\known-errors.csv -DB2log .\db2.log -outfile .\errors.log
Param (
[string]$Fehlerliste,
[string]$DB2log,
[string]$outfile
)
###Debug###
[string]$Fehlerliste = "E:\tmp\get-DB2Errors\known-errors.csv"
[string]$DB2log = "E:\tmp\get-DB2Errors\db2.log"
[string]$outfile = "E:\tmp\get-DB2Errors\errors.log"
###########
#import Fehlerliste
[array]$knownErrors = Import-Csv $Fehlerliste -Delimiter ";"
Get-Content $db2log -wait | Foreach {
$DB2Logerror = ($_.split(' '))[2]
#$DB2Logerror
$mymatch = $knownErrors -match $DB2Logerror | select Aktion
if ($mymatch.Aktion -eq 1) { $_ | Out-File -FilePath $outfile -Append}
}
und nun ab ins WE
der Torsten
ps.: die csv sollte wie folgt aussehen
Fehlercode;EventID;Aktion
00255B313I;0;0
021CD02PW;0;0
001CM027E;9993;1