Invoke Sftp Download
Zuletzt geändert: 07.09.2026 05:42

Übersicht

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.