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
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'
VERWANDTE LINKS #
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.