Invoke Sftp Download
Zuletzt geändert: 14.03.2026 05:56

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.