Invoke-SftpDownload #
ÜBERSICHT #
Führt den SFTP-Download für einen einzelnen Partner durch (inkl. Nachbearbeitung, Logging, Fehlerbenachrichtigung und Ergebnisobjekt).
SYNTAX #
Invoke-SftpDownload [-Partner] <hashtable> [[-TechnicalEmails] <string>] [-PartnerName] <string>
[-DataPath] <string> [[-LogFile] <string>] [[-MaxFiles] <int>] [-PreserveTimestamp]
[-RemoteTimeIsUtc]
BESCHREIBUNG #
Diese Funktion verarbeitet den SFTP-Eingang eines EDI-Partners: Sie lädt alle passenden Dateien aus dem Remote-Verzeichnis herunter und führt anschließend die konfigurierte postAction aus (delete, move, rename, none).
Fehler und wichtige Aktionen werden über Write-Log protokolliert, im Fehlerfall zusätzlich als Write-Warning angezeigt. Bei einem Fehler wird optional auch eine E-Mail an den technischen Ansprechpartner gesendet.
Die Funktion gibt ein strukturiertes Ergebnisobjekt zurück, das Informationen über die Anzahl erfolgreicher und fehlgeschlagener Downloads enthält sowie eine Liste der geladenen Dateien und Fehlertexte.
PARAMETER #
-Partner #
Type: hashtable
Der Partner-Eintrag aus der JsonDb (einzelner Hashtable), inklusive Verbindungseinstellungen, Pfaden und postAction.
-TechnicalEmails #
Type: string
Default: $null
Optional: E-Mail-Adressen für technische Fehlerbenachrichtigungen. Wenn diese nicht gesetzt ist, erfolgt kein Versand.
-LogFile #
Type: string
Default: $null
Optional: Pfad zur Logdatei. Es wird nur geschrieben, wenn ein Fehler auftritt oder -Verbose aktiviert ist.
-PartnerName #
Type: string
Falls kein Partnerobjekt übergeben wird: Name des Partners, der aus der JsonDb geladen werden soll.
-DataPath #
Type: string
Verzeichnis, in dem sich die JSON-Datenbank für Mail- oder Partner definitionen befindet (z. B. database\mail.json).
-MaxFiles #
Type: int
Default: 0
Maximale Anzahl zu verarbeitender Dateien (0 = alle). Überzählige werden als “Skipped” gezählt und aufgelistet.
-PreserveTimestamp #
Type: Switch
Übernimmt den Zeitstempel (LastWriteTime, CreationTime, LastAccessTime) vom Remote-File auf die lokal gespeicherte Datei.
-RemoteTimeIsUtc #
Type: Switch
Interpretation des Remote-Zeitstempels als UTC (wird lokal konvertiert). Ohne diesen Schalter wird die Zeit als lokal behandelt.
AUSGABEN #
PSCustomObject mit den Feldern:
- PartnerName - Success - Total - Succeeded - Failed - Skipped - Errors (Array[string]) - TransferedFiles (Array[string])
BEISPIELE #
# Führt den Download der Daten durch und loggt die Fehler im Logfile
$result = Invoke-SftpDownload -Partner $partner -LogFile "C:\Logs\sftp.log"
if (-not $result.Success) { ... }
# Verwendet die Parameter der Hashliste $Partner und versendet im Fehlerfall ein Email an den technisch verantwortlichen
Invoke-SftpDownload -Partner $partner -TechnicalEmails "edi-support@firma.de"
# Öffnent die JsonDb Tabelle für Partner und sucht den Datensatz ESSELUNGA um den Download durchzuführen
Invoke-SftpDownload -PartnerName 'ESSELUNGA' -DataPath C:\Temp
HINWEISE #
Unterstützt alle Authentifizierungsarten (PlainPassword, SecureString, PasswordPath, Certificate). Die Verarbeitung erfolgt robust, jede Datei wird unabhängig behandelt. Empfohlen für Zeitsteuerungsszenarien.