EulandaXtools — Funktionsreferenz
Minimaler FTP-Server in PowerShell 5.1. Multi-Session (RunspacePool), PASV/EPSV (nur Passive Mode), optionale Auth (USER/PASS), UTF-8 auf der Kontrollverbindung, Datei-Infos (SIZE/MDTM), Umbenennen (RNFR/RNTO), STAT-Listing über Control, Datei-Checksummen (HASH; XMD5/XSHA1/XSHA256; OPTS HASH ...), Auto-Stop (Default 60 Minuten), IP-Allowlist (Einzel-IPs oder CIDR).
Start-MiniFtpServer [[-Root] <string>] [[-Port] <int>] [[-User] <string>] [[-Password] <string>]
[[-ListenAddress] <string>] [[-PassivePorts] <int[]>] [[-MaxSessions] <int>]
[[-AutoStopMinutes] <int>] [[-AllowedClientIPs] <string[]>] [<CommonParameters>]Zweck
Warum Passivmodus
Ports, Firewall, NAT
Client-Anforderungen
Sicherheit
Interner Ablauf (Kurzübersicht)
Hauptloop
Session-Code
* Pfadnormalisierung stellt sicher, daß nichts außerhalb des `-Root` erreichbar ist.
* Listener stoppen, Sessions beenden, Pool dispose, Ctrl+C-Handler deregistrieren.
-Root
Type: string
Default: $PWD.PathOptionales Wurzelverzeichnis (Sandbox). Alle Dateioperationen sind auf dieses Verzeichnis und seine Childs beschränkt. Falls nicht angegeben, wird das aktuelle Arbeitsverzeichnis verwendet.
-Port
Type: int
Default: 2121Control-Port (TCP) für den FTP-Server. Default 2121. Hinweis: Ports <1024 erfordern auf Windows Administratorrechte.
-User
Type: stringOptionaler Benutzername. Wird nur geprüft, wenn auch `-Password` gesetzt ist.
-Password
Type: stringOptionales Passwort. Wird nur geprüft, wenn auch `-User` gesetzt ist.
-ListenAddress
Type: string
Default: '0.0.0.0'IP-Adresse, auf der der Control-Listener bindet. Default `0.0.0.0` (alle IPv4-Interfaces).
-PassivePorts
Type: int[]
Default: $nullListe bzw. Range von TCP-Ports für passive Datenverbindungen (z. B. `50000..50011`). Wenn nicht angegeben, setzt der Server einen Default: Start 50000, Anzahl ca. `MaxSessions*4` (mindestens 8 Ports).
-MaxSessions
Type: int
Default: 3Maximale parallele Control-Sessions (RunspacePool MaxSize). Default 3.
-AutoStopMinutes
Type: int
Default: 60Minuten bis zur automatischen Selbstabschaltung. `0` deaktiviert. Default 60.
-AllowedClientIPs
Type: string[]
Default: $nullOptional. Liste von erlaubten Client-IPs oder CIDR-Netzen (IPv4/IPv6). Beispiele:
noneKeine Rückgabe. Die Funktion läuft bis Auto-Stop, Strg+C oder Aufruf von Stop-MiniFtpServer.
# Minimalstart mit Defaults (Control 2121, Passiv-Range Default 50000-50011 bei MaxSessions=3)
Start-MiniFtpServer -Root C:\Temp# Eigene Passiv-Range und 5 parallele Sessions
Start-MiniFtpServer -Root C:\Temp -Port 2121 -MaxSessions 5 -PassivePorts (50000..50031)# Benutzer/Passwort aktivieren
Start-MiniFtpServer -Root C:\Temp -User support -Password secret# Zwei konkrete Public-IPs erlauben (und sonst niemanden)
Start-MiniFtpServer -Root C:\Temp -AllowedClientIPs @('84.137.55.101','198.51.100.23')# Ein Netz plus eine Einzel-IP erlauben
Start-MiniFtpServer -Root C:\Temp -AllowedClientIPs @('203.0.113.0/24','84.137.55.101')# Hinter NAT/Router (Server im LAN):
# 1) Am Router Port-Forwarding einrichten: Control-Port (z. B. 2121) und Passiv-Range (z. B. 50000-50011) auf die interne Server-IP.
# 2) In der Windows-Firewall die gleichen Ports INBOUND erlauben.
# 3) DynDNS oder Public IP an den Client kommunizieren.
Start-MiniFtpServer -Root C:\Temp -PassivePorts (50000..50011)# Automatische Abschaltung nach 30 Minuten
Start-MiniFtpServer -Root C:\Temp -AutoStopMinutes 30Windows-Firewall-Beispiele (Server):
New-NetFirewallRule -DisplayName 'MiniFTP Control' -Direction Inbound -Protocol TCP -LocalPort 2121 -Action Allow
New-NetFirewallRule -DisplayName 'MiniFTP Passive' -Direction Inbound -Protocol TCP -LocalPort 50000-50011 -Action Allow
Port 21 verwenden