Bei Parallels RAS denken die meisten Administratoren an die grafische Oberfläche. Doch jenseits dieser Konsole steckt noch viel mehr, insbesondere wenn man Ressourcen und Benutzer über die PowerShell-API von Parallels RAS verwaltet. Mit der PowerShell-API von Parallels (Modul RASAdmin) lassen sich sämtliche Administrationsvorgänge automatisieren: Veröffentlichung von Anwendungen, Verwaltung von Zugriffsfiltern, Bereitstellung von Zertifikaten, Einbindung von Tenants… Alles skriptbar, versionierbar und in Ihre CI/CD-Pipelines oder ITSM-Tools integrierbar.
Dieser Artikel bietet einen Überblick über die Möglichkeiten der PowerShell-API, die konkreten Vorteile für IT-Teams, die technischen Voraussetzungen und eine Reihe aufeinander aufbauender Übungen für die Praxis.
Was die PowerShell-API von Parallels RAS kann
Die goldene Regel ist einfach: Alles, was sich in der grafischen Konsole von Parallels RAS erledigen lässt, geht auch über die PowerShell-API. Die wichtigsten Kategorien von Vorgängen:
1. Verwaltung veröffentlichter Ressourcen
- Anwendungen und Remote-Desktops veröffentlichen
- Zugriffsfilter anwenden (Benutzer/Gruppen, IP-Bereiche, Client-Typen…)
- Erlaubnis- und Verweigerungsregeln für veröffentlichte Elemente verwalten
2. Zertifikatsverwaltung
- SSL-Zertifikate erstellen und bereitstellen (manuell oder per Let’s Encrypt)
- Automatische Verlängerungen konfigurieren
- Zertifikate Secure Gateways oder Load Balancern zuordnen
3. Multi-Tenant-Architektur
- Einen Tenant Broker per Skript anbinden
- Geheime Schlüssel für die Tenant-Registrierung erzeugen
- Das Onboarding neuer Umgebungen automatisieren
4. Globale Farm-Konfiguration
- Broker, Gateways und RDS-Server-Pools verwalten
- Konfigurationen idempotent anwenden
- Parallels RAS in Ansible, Terraform oder Bereitstellungsskripte einbinden
Darüber hinaus stellt das PowerShell-Modul RASAdmin alle Ressourcen über eine REST-API (Port 20443) bereit, was die Integration aus jeder Sprache und Plattform ermöglicht.
Vorteile der Automatisierung über die PowerShell-API
Zeitersparnis und Konsistenz
Statt für jede neue Umgebung dieselben Schritte von Hand zu wiederholen, garantiert ein PowerShell-Skript bei jeder Ausführung eine identische Konfiguration. Keine Versäumnisse mehr, keine menschlichen Konfigurationsfehler.
Integration in DevOps-Pipelines
RASAdmin-Skripte lassen sich aus Azure DevOps, GitHub Actions, Jenkins oder jedem anderen CI/CD-System ausführen. Das öffnet die Tür zur Provisionierung Ihrer Parallels-RAS-Umgebungen nach dem Prinzip „Infrastructure as Code“.
Nachvollziehbarkeit und Prüfbarkeit
Ein in Git versioniertes Skript ist eine klare Historie jeder Änderung an der Infrastruktur. Im Störungsfall lässt sich eine bestimmte Konfiguration erneut anwenden oder zurücknehmen.
Skalierbarkeit
Folglich bleibt der Administrationsaufwand gleich, ob Sie 5 oder 500 Tenants verwalten. Ein einziges Skript kann Dutzende Umgebungen in wenigen Sekunden bereitstellen.
Plattformübergreifend dank REST
Über PowerShell hinaus erlaubt die REST-API von Parallels RAS die Interaktion aus jedem Tool, das HTTP-Anfragen senden kann: Postman, Python, Webanwendungen usw.
Voraussetzungen
- Windows Server (oder Windows-Arbeitsplatz) mit PowerShell 5.1 oder PowerShell 7+
- Installiertes Parallels RAS (Connection Broker vorhanden)
- Netzwerkzugriff auf den Server mit dem Connection Broker
- RAS-Administratorkonto mit ausreichenden Rechten
Das Modul RASAdmin installieren
Option 1 — Zunächst: Wenn Sie eine grafische Installation bevorzugen, starten Sie das normale Installationsprogramm von Parallels RAS. Dann wählen Sie „Custom installation“ und die Komponente „Parallels RAS PowerShell“.
Option 2 — Unbeaufsichtigte Installation (MSI):
msiexec /i RASInstaller-*.msi ADDLOCAL=F_PowerShell /qn
Wichtig: Die Version der RAS-PowerShell-Binärdateien muss exakt der Version des RAS Connection Broker entsprechen. Eine abweichende Version führt zu Verbindungsfehlern.
Das Modul prüfen und importieren
Import-Module RASAdmin
Get-Command -Module RASAdmin
Vollständige Dokumentation: https://docs.parallels.com/landing/ras-powershell-api-guide
Übungsreihe — Praxis
0 — Verbindung und erster Befehl
$username = "apiuser"
$password = "YourPassword!"
$server = "rasbroker.your-domain.local"
$passwordEnc = ConvertTo-SecureString $password -AsPlainText -Force
New-RASSession -Username $username -Password $passwordEnc -Server $server
Get-RASBroker
Remove-RASSession
1 — Eine Anwendung und einen Desktop veröffentlichen
$passwordEnc = ConvertTo-SecureString $password -AsPlainText -Force
New-RASSession -Username $username -Password $passwordEnc -Server $server
$pool = Get-RASRDSHostPool -Name "RDSH Pool"
$desktop = New-RASPubRDSDesktop -Name "MyDesktop" -PublishFrom HostPool -PublishFromHostPoolIds $pool.Id -DesktopSize UseAvailableArea
$app = New-RASPubRDSApp -Name "Paint" -PublishFrom HostPool -PublishFromHostPoolIds $pool.Id -Target "%windir%system32mspaint.exe"
Invoke-RASApply
Remove-RASSession
2 — Zugriffsfilter hinzufügen
New-RASSession -Username $username -Password $passwordEnc -Server $server
$app = Get-RASPubRDSApp -Name "Paint"
Add-RASRule -Id $app.Id -ObjType PubItem -RuleName "MyFilter"
$rules = Get-RASRule -Id $app.Id -ObjType PubItem
Set-RASCriteria -Id $app.Id -ObjType PubItem -SecurityPrincipalsEnabled $true -IPsEnabled $true -RuleId $rules[0].Id
Add-RASCriteriaSecurityPrincipal -Id $app.Id -ObjType PubItem -RuleId $rules[0].Id -Account "Guests"
Add-RASCriteriaIP -Id $app.Id -ObjType PubItem -RuleId $rules[0].Id -IPType Version4 -IP "192.168.1.1-192.168.1.50"
Set-RASPubItemFilter -Id $app.Id -Default Deny
Invoke-RASApply
Remove-RASSession
3 — Ein Let’s-Encrypt-Zertifikat erstellen
New-RASSession -Username $username -Password $passwordEnc -Server $labServer
Set-RASLetsEncryptSettings -SiteID 1 -TermsAccepted $true
Invoke-RASApply
New-RASCertificate -Name "CertGateway" -CommonName "ras.your-public-domain.com" -Email "[email protected]" -LetsEncrypt -Enabled $true -Organisation "Your Organisation" -KeySize KeySize2048 -Usage Gateway
Invoke-RASApply
Remove-RASSession
4 — Einen Tenant Broker anbinden
New-RASSession -Username $username -Password $password -Server $tenantBroker
Set-RASTenantBrokerSettings -AllowRegistrationWithSecretKey $true
Invoke-RASApply
$secretKey = Invoke-RASTenantBrokerSettings -Command GenerateHash
Invoke-RASApply
Remove-RASSession
New-RASSession -Username $username -Password $password -Server $labServer
Invoke-RASTenantBroker -Join -HashKey $secretKey -TenantBroker $tenantBroker -PublicDomainAddresses "lab1.your-public-domain.com" -TenantName $labServer
Invoke-RASApply
Remove-RASSession
Best Practices
- Speichern Sie Passwörter niemals im Klartext — nutzen Sie die Windows-Anmeldeinformationsverwaltung, Azure Key Vault oder die Secrets Ihrer CI/CD.
- Rufen Sie immer Invoke-RASApply auf — ohne diesen Aufruf bleiben die Änderungen ausstehend.
- Schließen Sie die Sitzung sauber — verwenden Sie Remove-RASSession in einem try/finally-Block.
- Versionieren Sie Ihre Skripte — legen Sie sie in Git ab, um Nachvollziehbarkeit und Rollback zu ermöglichen.
Offizielle Ressourcen:
- Der umfassende Leitfaden zur PowerShell-Automatisierung: https://docs.parallels.com/landing/ras-powershell-api-guide
- Die wichtigsten Ressourcen für webbasierte Integrationen: https://docs.parallels.com/landing/ras-rest-api-guide
- Den vollen Funktionsumfang im eigenen Lab testen: https://parallels.com/products/ras/try
Fazit
Die PowerShell-API von Parallels RAS verwandelt die Verwaltung der Veröffentlichungsinfrastruktur in einen reproduzierbaren, prüfbaren und skalierbaren Prozess. Ob Sie als Systemadministrator Zeit bei wiederkehrenden Aufgaben sparen wollen oder als Architekt Parallels RAS in eine DevOps-Pipeline einbinden: Diese Cmdlets bieten Ihnen genau die Kontrolle, die Sie brauchen. Die Übungsreihe in diesem Artikel ist eine solide Grundlage — vertiefen Sie sie mit der offiziellen Dokumentation und experimentieren Sie.
