Receive-SftpFolder #
ÜBERSICHT #
Lädt alle passenden Dateien eines SFTP-Ordners herunter (Worker mit flachen Parametern, inkl. Remote-Nachbehandlung und Logging).
SYNTAX #
Receive-SftpFolder [-Server] <string> [[-Port] <int>] [[-User] <string>] [[-PlainPassword]
<string>] [[-PasswordPath] <string>] [[-Certificate] <string>] [-RemoteFolder] <string>
[-LocalFolder] <string> [[-Mask] <string>] [[-PostAction] <string>] [[-PostPath] <string>]
[[-PostExtension] <string>] [[-MaxFiles] <int>] [-PreserveTimestamp] [-RemoteTimeIsUtc]
[[-Name] <string>] [[-LogFile] <string>] [[-TechnicalEmails] <string>] [<CommonParameters>]
BESCHREIBUNG #
Der parametergesteuerte Kern des SFTP-Eingangs (Vorgabe CN 16.08.2026): neue Aufrufer (EulandaXedi/Xsuite, deren Wahrheit in den SQL-Schemata liegt) brauchen KEIN partner.json-Format mehr - alles läuft über einzelne Parameter. Invoke-SftpDownload bleibt als kompatible Hülle für die Bestandskunden-Skripte bestehen und ruft diesen Worker.
Ablauf je Datei: herunterladen (Receive-SftpFile), optional den Remote-Zeitstempel übernehmen, danach die Nachbehandlung am Server: delete (löschen), move (nach -PostPath verschieben), rename (um -PostExtension ergänzen, z.B. ‘.done’) oder none. Fehler je Datei brechen den Lauf nicht ab.
Sichtbarkeits-Kontrakt: das ERGEBNISOBJEKT ist die Schnittstelle - auch ein Totalfehler (Login kaputt, Server nicht erreichbar) kommt als Objekt mit Success=$false und gefüllter Errors-Liste zurück, damit der Aufrufer ihn journalisieren kann. $null bedeutet ausschliesslich: nichts zu tun (keine passenden Dateien). Datei-Log und Fehlermail des LoggingContext sind die Alt-Strecke der partner.json-Skripte und nur aktiv, wenn -LogFile bzw. -TechnicalEmails gesetzt sind.
PARAMETER #
-Server #
Type: string
SFTP-Server (Hostname oder IP).
-Port #
Type: int
Default: 22
Port, Default 22.
-User #
Type: string
Benutzername.
-PlainPassword #
Type: string
Kennwort im Klartext (nur wenn kein anderer Weg möglich ist).
-Password #
Kennwort als SecureString.
-PasswordPath #
Type: string
Pfad zu einer per Export-Clixml gesicherten Kennwortdatei.
-Certificate #
Type: string
Pfad zum privaten Schlüssel (Zertifikats-Login).
-RemoteFolder #
Type: string
Remote-Ordner, aus dem gelesen wird.
-LocalFolder #
Type: string
Lokaler Zielordner der Downloads.
-Mask #
Type: string
Dateimaske (z.B. *.edi); leer = alle Dateien.
-PostAction #
Type: string
Default: 'none'
Nachbehandlung am Server nach erfolgreichem Download: none, delete, move oder rename. Unbekannte Werte werden je Datei als Fehler protokolliert (Verhalten der bisherigen partner.json-Strecke).
-PostPath #
Type: string
Zielordner der move-Nachbehandlung.
-PostExtension #
Type: string
Namenszusatz der rename-Nachbehandlung (z.B. ‘.done’). Die Maske so wählen, dass umbenannte Dateien nicht erneut matchen.
-MaxFiles #
Type: int
Default: 0
Maximale Anzahl je Lauf (0 = alle); Überzählige zählen als Skipped.
-PreserveTimestamp #
Type: Switch
Übernimmt den Remote-Zeitstempel auf die lokale Datei.
-RemoteTimeIsUtc #
Type: Switch
Interpretiert den Remote-Zeitstempel als UTC.
-Name #
Type: string
Anzeigename für Log und Ergebnis (z.B. der Partnername); leer = Servername.
-LogFile #
Type: string
Default: $null
Optionale Logdatei.
-TechnicalEmails #
Type: string
Default: $null
E-Mail-Adressen für technische Fehlerbenachrichtigungen.
AUSGABEN #
PSCustomObject (PartnerName, Success, Total, Succeeded, Failed,
Skipped, Errors, TransferedFiles) oder $null, wenn nichts zu tun war.
BEISPIELE #
Receive-SftpFolder -Server 'sftp.example.com' -User 'edi' -PlainPassword $pw -RemoteFolder '/out' -LocalFolder 'C:\Edi\In' -Mask '*.edi' -PostAction rename -PostExtension '.done'