Benutzer-Werkzeuge

Webseiten-Werkzeuge


skripte:rsk_pruefen_vor_spooler

RSK_prüfen_vor_Spooler

Nutzen: Dieses Skript dient als vorgeschaltete Qualitätskontrolle für Excel-Dateien, bevor sie in einen automatisierten Prozess (Spooler) importiert werden. Es stellt sicher, dass nur valide Dateien verarbeitet werden.

Funktion:

Prüft alle Excel-Dateien in einem definierten Ordner.

Kontrolliert das Datum in Zelle F1 gegen den aktuellen Monat und das aktuelle Jahr.

Prüft die Mandantennummer in Zelle E1 gegen eine Liste ungültiger Nummern.

Erkennt und überspringt Dateien, die bereits durch einen anderen Prozess geöffnet (gesperrt) sind.

Erstellt am Ende eine zusammenfassende CSV-Datei mit den Prüfergebnissen.

--- ANPASSENDE VARIABLEN ---
$folderPath = "DEINPATH"
$cell_MandantenNummer = "E1"
$cell_Datum = "F1"
$ungueltigeNummern = @("10001", "12345")
$outputFile = Join-Path $folderPath "Vor-Spooler-Pruefungs-Ergebnis.csv"
 
--- ENDE DER ANPASSUNGEN ---
--- VORBEREITUNG ---
$heutigesDatum = Get-Date
$zielMonatJahr = $heutigesDatum.ToString("MM.yyyy")
Write-Host "Prüfung für Monat/Jahr: $zielMonatJahr" -ForegroundColor Magenta
if (-not (Test-Path $folderPath)) {
Write-Host "FEHLER: Der angegebene Ordner '$folderPath' wurde nicht gefunden." -ForegroundColor Red
exit
}
$excel = New-Object -ComObject Excel.Application
$excel.Visible = $false
$results = @()
$excelFiles = Get-ChildItem -Path $folderPath -Filter "*.xlsx"
 
--- HAUPTVERARBEITUNG ---
foreach ($file in $excelFiles) {
Write-Host "`n--- Prüfe Datei: $($file.Name) ---" -ForegroundColor Yellow
try {
$stream = [System.IO.File]::Open($file.FullName, [System.IO.FileMode]::Open, [System.IO.FileAccess]::Read, [System.IO.FileShare]::None)
if ($stream) { $stream.Close() }
}
catch {
$status = "FEHLER"; $fehlerGrund = "Datei ist bereits geöffnet oder gesperrt."
Write-Host "  -> FINALER STATUS:" -NoNewline; Write-Host " $status" -ForegroundColor Red
Write-Host "     > Grund: $fehlerGrund" -ForegroundColor Red
$results += [PSCustomObject]@{
"Dateiname" = $file.Name; "Status" = $status; "Grund_bei_Fehler" = $fehlerGrund
"Gelesene_Mandantennr" = "N/A"; "Gelesenes_Datum" = "N/A"
}
continue
}
 
$status = "OK"; $fehlerGrund = ""
try {
    $workbook = $excel.Workbooks.Open($file.FullName, $true)
    $worksheet = $workbook.Worksheets.Item(1)
    $mandantenNummerAusZelle = $worksheet.Range($cell_MandantenNummer).Text
    $datumAusZelle = $worksheet.Range($cell_Datum).Text
    $workbook.Close($false)
}
catch {
    $status = "FEHLER"; $fehlerGrund = "Datei konnte nicht gelesen werden: $($_.Exception.Message)"
    $mandantenNummerAusZelle = "N/A"; $datumAusZelle = "N/A"
}
 
if ($status -eq "OK") {
    Write-Host "  -> Prüfe Mandantennummer '$mandantenNummerAusZelle'..."
    if ($ungueltigeNummern -contains $mandantenNummerAusZelle) {
        $status = "FEHLER"; $fehlerGrund = "Ungültige Mandantennummer gefunden."
    } else { Write-Host "     > Nummer ist gültig." }
    if ($status -eq "OK") {
        Write-Host "  -> Prüfe Datum '$datumAusZelle' gegen '$zielMonatJahr'..."
        if ($datumAusZelle -notlike "*$zielMonatJahr*") {
            $status = "FEHLER"; $fehlerGrund = "Datum stimmt nicht mit aktuellem Monat/Jahr überein."
        } else { Write-Host "     > Datum ist korrekt." }
    }
}
 
if ($status -eq "OK") {
    Write-Host "  -> FINALER STATUS:" -NoNewline; Write-Host " $status" -ForegroundColor Green
} else {
    Write-Host "  -> FINALER STATUS:" -NoNewline; Write-Host " $status" -ForegroundColor Red
    Write-Host "     > Grund: $fehlerGrund" -ForegroundColor Red
}
 
$results += [PSCustomObject]@{
    "Dateiname" = $file.Name; "Status" = $status; "Grund_bei_Fehler" = $fehlerGrund
    "Gelesene_Mandantennr" = $mandantenNummerAusZelle; "Gelesenes_Datum" = $datumAusZelle
}
 
}
 
$excel.Quit() [System.Runtime.InteropServices.Marshal]::ReleaseComObject($excel) | Out-Null $results | Export-Csv -Path $outputFile -NoTypeInformation -Encoding UTF8 -Delimiter ";" Write-Host "`nFertig! Die Ergebnisse wurden in der Datei '$outputFile' gespeichert."
//Author: Stefan Agethen //Letzte Bearbeitung: 2025//
skripte/rsk_pruefen_vor_spooler.txt · Zuletzt geändert: von Stefan Agethen

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki