Invoke-SftpDownload #
ÜBERSICHT #
Führt den SFTP-Download für einen einzelnen Partner durch (kompatible Hülle um den Worker Receive-SftpFolder).
SYNTAX #
Invoke-SftpDownload [-Partner] <hashtable> [[-TechnicalEmails] <string>] [-PartnerName] <string>
[-DataPath] <string> [[-LogFile] <string>] [[-MaxFiles] <int>] [-PreserveTimestamp]
[-RemoteTimeIsUtc]
BESCHREIBUNG #
Bestandsschnittstelle der partner.json-Strecke: nimmt den Partner-Eintrag (Hashtable/JsonDb-Objekt) entgegen, übersetzt ihn in flache Parameter und ruft den Worker Receive-SftpFolder, der die eigentliche Arbeit macht (Download, Zeitstempel, Remote-Nachbehandlung delete/move/rename, Logging, Ergebnisobjekt).
Neue Aufrufer nutzen direkt Receive-SftpFolder - dort gibt es kein JSON-Format mehr, alles läuft über Parameter (Vorgabe CN 16.08.2026). Diese Hülle bleibt für die Altkunden-Skripte unverändert bedienbar.
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 #
ALTLAST (Inventur 07.09.2026, docs\internal\legacy-inventory.md, Familie 2): nur der Parametersatz ByName (-PartnerName, -DataPath, Partner aus partner.json) ist Altlast; Konsumenten davon: EulandaXedi Invoke-TransportWorker (eingefroren), Customers EdiLegacyDreistern und EdiLegacyTubaClean. Neuer Code nimmt den Parametersatz ByPartner mit expliziten Werten aus SQL (xedi.*). Unterstützt alle Authentifizierungsarten (PlainPassword, SecureString, PasswordPath, Certificate). Die Verarbeitung erfolgt robust, jede Datei wird unabhängig behandelt. Empfohlen für Zeitsteuerungsszenarien.