Invoke-SftpDownload

EulandaXtools — Funktionsreferenz

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:

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.