Bij Parallels RAS denken de meeste beheerders aan de grafische interface. Toch gaat er achter die console veel meer schuil, zeker wanneer je resources en gebruikers beheert via de PowerShell-API van Parallels RAS. Met de PowerShell-API van Parallels (module RASAdmin) kun je alle beheerhandelingen automatiseren: applicaties publiceren, toegangsfilters beheren, certificaten uitrollen, tenants koppelen… Alles scriptbaar, versioneerbaar en te integreren in je CI/CD-pipelines of ITSM-tools.
Dit artikel geeft een overzicht van wat de PowerShell-API kan, de concrete voordelen voor IT-teams, de technische vereisten en een reeks oplopende oefeningen om zelf aan de slag te gaan.
Wat de PowerShell-API van Parallels RAS kan
De gouden regel is simpel: alles wat je in de grafische console van Parallels RAS kunt doen, kan ook via de PowerShell-API. Dit zijn de belangrijkste categorieën handelingen:
1. Beheer van gepubliceerde resources
- Applicaties en externe bureaubladen publiceren
- Toegangsfilters toepassen (gebruikers/groepen, IP-bereiken, clienttypen…)
- Regels voor toestaan en weigeren op gepubliceerde items beheren
2. Certificaatbeheer
- SSL-certificaten aanmaken en uitrollen (handmatig of via Let’s Encrypt)
- Automatische verlenging instellen
- Certificaten koppelen aan Secure Gateways of loadbalancers
3. Multi-tenantarchitectuur
- Een Tenant Broker koppelen vanuit een script
- Geheime sleutels genereren voor de registratie van tenants
- De onboarding van nieuwe omgevingen automatiseren
4. Globale farmconfiguratie
- Brokers, gateways en RDS-serverpools beheren
- Configuraties idempotent toepassen
- Parallels RAS integreren in Ansible, Terraform of uitrolscripts
Bovendien stelt de PowerShell-module RASAdmin alle resources beschikbaar via een REST API (poort 20443), zodat je vanuit elke taal of elk platform kunt integreren.
Voordelen van automatiseren via de PowerShell-API
Tijdwinst en consistentie
In plaats van voor elke nieuwe omgeving dezelfde handelingen handmatig te herhalen, garandeert een PowerShell-script bij elke uitvoering een identieke configuratie. Geen vergeten stappen meer, geen menselijke configuratiefouten.
Integratie in DevOps-pipelines
RASAdmin-scripts kunnen worden uitgevoerd vanuit Azure DevOps, GitHub Actions, Jenkins of elk ander CI/CD-systeem. Dat opent de deur naar provisioning van je Parallels RAS-omgevingen als “infrastructure as code”.
Traceerbaarheid en auditeerbaarheid
Een script dat in Git wordt geversioneerd, vormt een duidelijke geschiedenis van elke wijziging aan de infrastructuur. Bij een incident kun je een specifieke configuratie opnieuw toepassen of terugdraaien.
Schaalbaarheid
Daardoor blijft de beheerinspanning gelijk, of je nu 5 of 500 tenants beheert. Eén script kan tientallen omgevingen in een paar seconden uitrollen.
Platformonafhankelijk via REST
Naast PowerShell maakt de REST API van Parallels RAS interactie mogelijk vanuit elke tool die HTTP-verzoeken kan doen: Postman, Python, webapplicaties enzovoort.
Vereisten
- Windows Server (of een Windows-werkstation) met PowerShell 5.1 of PowerShell 7+
- Geïnstalleerde Parallels RAS (met een werkende Connection Broker)
- Netwerktoegang tot de server waarop de Connection Broker draait
- RAS-beheerdersaccount met voldoende rechten
De module RASAdmin installeren
Optie 1 — Allereerst: geef je de voorkeur aan een grafische installatie, start dan het standaard installatieprogramma van Parallels RAS. Kies vervolgens “Custom installation” en selecteer de component “Parallels RAS PowerShell”.
Optie 2 — Stille installatie (MSI):
msiexec /i RASInstaller-*.msi ADDLOCAL=F_PowerShell /qn
Belangrijk: de versie van de RAS PowerShell-binaries moet exact overeenkomen met de versie van de RAS Connection Broker. Een afwijkende versie leidt tot verbindingsfouten.
De module controleren en importeren
Import-Module RASAdmin
Get-Command -Module RASAdmin
Volledige documentatie: https://docs.parallels.com/landing/ras-powershell-api-guide
Oefenreeks — aan de slag
0 — Verbinding en eerste commando
$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 — Een applicatie en een bureaublad publiceren
$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 — Toegangsfilters toevoegen
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 — Een Let’s Encrypt-certificaat aanmaken
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 — Een Tenant Broker koppelen
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
- Sla wachtwoorden nooit op in platte tekst — gebruik Windows Credential Manager, Azure Key Vault of de secrets van je CI/CD.
- Roep altijd Invoke-RASApply aan — zonder deze aanroep blijven de wijzigingen in afwachting.
- Sluit de sessie netjes af — gebruik Remove-RASSession in een try/finally-blok.
- Versioneer je scripts — bewaar ze in Git voor traceerbaarheid en om terug te kunnen draaien.
Officiële bronnen:
- De uitgebreide gids voor PowerShell-automatisering: https://docs.parallels.com/landing/ras-powershell-api-guide
- Essentiële bronnen voor webgebaseerde integraties: https://docs.parallels.com/landing/ras-rest-api-guide
- Test alle functies in je eigen lab: https://parallels.com/products/ras/try
Conclusie
De PowerShell-API van Parallels RAS maakt van het beheer van de publicatie-infrastructuur een reproduceerbaar, auditeerbaar en schaalbaar proces. Of je nu systeembeheerder bent die tijd wil winnen bij repetitieve taken, of architect die Parallels RAS in een DevOps-pipeline integreert: deze cmdlets geven je precies de controle die je nodig hebt. De oefenreeks in dit artikel is een stevige basis — duik in de officiële documentatie en experimenteer.
