Get Sftp Session Params
Zuletzt geändert: 14.03.2026 05:56

Get-SftpSessionParams #

Intern – Diese Funktion ist nicht exportiert und nur modulintern verfügbar.

ÜBERSICHT #

Baut die Parameter als Hashtable für die SFTP-Funktonen zusammen. Unterstützt Passwort (secure/plain/file) oder Key-Auth (OpenSSH-Key, kein PPK). Kann direkt mit -FromBound @PSBoundParameters aufgerufen werden.

SYNTAX #

Get-SftpSessionParams [-FromBound] <hashtable> [-Server] <string> [[-Port] <int>] [[-Certificate]
    <string>] [-User] <string> [[-Password] <securestring>] [[-PlainPassword] <string>]
    [[-PasswordPath] <string>] [[-AcceptKey] <bool>]

BESCHREIBUNG #

Diese Hilfsfunktion erstellt und validiert die Parameter für eine SFTP-Session. Es gibt zwei Aufrufmodi: 1) -FromBound : Übergabe der kompletten @PSBoundParameters der aufrufenden Funktion. Relevante Schlüssel, die ausgewertet werden: Server, Port, Certificate, User, Password, PlainPassword, PasswordPath. 2) Klassisch per Einzelparametern (Server, Port, …).

Authentifizierungsvarianten

  • Passwort-Login: SecureString (Password), Klartext (PlainPassword) oder aus Datei (PasswordPath).
  • Key-Auth (Certificate): OpenSSH-Private-Key (z. B. id_ed25519/id_rsa). PPK wird verworfen. Passphrase ist optional als Alis Passphrase, Plainpassphrase und PassphrasePath

Pfadauflösung

  • PasswordPath:
  • Absoluter Pfad → wird 1:1 verwendet.
  • Relativer Name → wird als Basename interpretiert und auf $HOME.eulandaconnect<name>.xml gemappt. Beispiel: -PasswordPath ‘mysecret’ ⇒ $HOME.eulandaconnect\mysecret.xml
  • Inhaltserkennung: CLIXML (Export-Clixml) wird als SecureString importiert; sonst Klartext → SecureString.
  • Certificate:
  • Absoluter Pfad → wird 1:1 verwendet.
  • Relativer Name → es wird zuerst $HOME.eulandaconnect<name> geprüft, danach $HOME.ssh<name>. Wird nichts gefunden, zeigt die Fehlermeldung auf den .eulandaconnect-Pfad.
  • Es wird keine Erweiterung angefügt; die Datei wird also inkl. Extension angegeben, (z. B. ‘id_ed25519’, ‘id_rsa.key’).
  • .ppk wird abgelehnt.

Sonstiges

  • Port: falls nicht gesetzt/ungültig → 22.
  • AcceptKey ist standardmäßig $true (Server-Fingerprint wird akzeptiert).
  • Die Funktion gibt eine Hashtable zurück, die direkt an Invoke-SftpSession übergeben werden kann, diese Funktion wird implizit von den SFTP-Funktionen wiw Get-SFTPdir aufgerufen.
  • PowerShell 5.1 kompatibel.

PARAMETER #

-FromBound #

Type: hashtable

Hashtable (typischerweise @PSBoundParameters) aus der aufrufenden Funktion. Ausgewertet werden: Server, Port, Certificate, User, Password, PlainPassword, PasswordPath.

-Server #

Type: string

Hostname oder IP des SFTP-Servers. Pflicht.

-Port #

Type: int
Default: 22

TCP-Port (Standard: 22). Falls leer/≤0 → 22.

-Certificate #

Type: string

Pfad/Dateiname eines OpenSSH-Private-Keys. Relativ → siehe Pfadauflösung (zuerst $HOME.eulandaconnect, dann $HOME.ssh). .ppk ist nicht erlaubt.

-User #

Type: string

Benutzername für die Anmeldung. Pflicht.

-Password #

Type: securestring

SecureString für Passwort (bei Passwort-Login) oder Key-Passphrase (bei -Certificate).

-PlainPassword #

Type: string

Klartext-Passwort (oder Passphrase) - wird intern in SecureString umgewandelt.

-PasswordPath #

Type: string

Pfad/Name der Passwortdatei. Relativ → $HOME.eulandaconnect<name>.xml. Dateiinhalt: entweder CLIXML-SecureString (Export-Clixml) oder Klartext.

-AcceptKey #

Type: bool
Default: $true

Gibt an, ob der Host-Key des Servers automatisch akzeptiert wird (Standard: $true).

AUSGABEN #

Hashtable

Parameter für Invoke-SFTPSession

BEISPIELE #

# Aufruf in einer SFTP-Funktion, alle relevanten Parameter kommen aus dem Funktionskopf
$sessionParams = Get-SftpSessionParams -FromBound $PSBoundParameters
# Passwort (SecureString)
$sec = Read-Host -AsSecureString 'Passwort'
$sessionParams = Get-SftpSessionParams -Server 'sftp.example.com' -User 'cn' -Password $sec
# Passwort (Klartext)
$sessionParams = Get-SftpSessionParams -Server 'sftp.example.com' -User 'cn' -PlainPassword 'pass123'
# Passwort aus Datei (relativer Name → $HOME\.eulandaconnect\mypwd.xml)
$sessionParams = Get-SftpSessionParams -Server 'sftp.example.com' -User 'cn' -PasswordPath 'mypwd'
# Passwort aus Datei (absoluter Pfad)
$sessionParams = Get-SftpSessionParams -Server 'sftp.example.com' -User 'cn' -PasswordPath 'C:\Secure\mypwd.xml'
# Key-Auth ohne Passphrase, relativer Keyname → zuerst $HOME\.eulandaconnect\id_ed25519.key, dann $HOME\.ssh\id_ed25519.key
$sessionParams = Get-SftpSessionParams -Server 'sftp.example.com' -User 'cn' -Certificate 'id_ed25519.key'
# Key-Auth mit Passphrase im Klartext über Alias
$sessionParams = Get-SftpSessionParams -Server 'sftp.example.com' -User 'cn' -Certificate 'C:\keys\id_rsa' -PlainPassphrase 'secret'
# Key-Auth mit Passphrase aus Datei, relativer Name → $HOME\.eulandaconnect\keypass.xml
$sessionParams = Get-SftpSessionParams -Server 'sftp.example.com' -User 'cn' -Certificate 'id_ed25519' -PasswordPath 'keypass'

HINWEISE #

  • Benötigt das Modul POSH-SSH. Installation: Install-Module -Name POSH-SSH -Repository PSGallery
  • AcceptKey=$true
  • .ppk wird nicht unterstützt.
  • Bei -FromBound werden nur die genannten Schlüssel ausgewertet.
  • Für PS-5.1-Kompatibilität wird [PSCredential] per New-Object erzeugt.