Hoe u PowerShell-remotebeheer in Windows kunt inschakelen en beheren.
PowerShell Remoting (of kortweg PSRemoting) is een van die superhandige functies die vaak standaard is uitgeschakeld op desktops, met name in Windows 10 en 11. Als je meerdere machines beheert of scripts op afstand uitvoert, kan het een hele klus zijn om dit in te schakelen zonder dat er iets misgaat. Op servers? Meestal ingeschakeld, maar op gewone Windows? Niet zo snel. Deze handleiding helpt je bij de installatie, laat je zien hoe je kunt testen of het werkt en wat je moet doen als er iets misgaat. Het uiteindelijke doel? Gemakkelijk toegang krijgen tot externe PowerShell-sessies of opdrachten uitvoeren via je netwerk.
Als je dit eenmaal werkend hebt, is het alsof je een geheime superkracht hebt: machines beheren zonder je bureau te verlaten. Maar het inschakelen van beheer op afstand brengt natuurlijk ook beveiligingsrisico’s met zich mee, dus je wilt het wel goed doen. Verwacht commando’s zoals Enable-PSRemotingen voor het beheren van WinRM-services, plus enkele aanpassingen in je firewallinstellingen. In principe gaat het erom dat WinRM en PowerShell goed met elkaar communiceren, zodat beheer op afstand soepel verloopt.
Hoe los je problemen met PowerShell-remotebeheer op in Windows?
PowerShell-remotebeheer (WinRM) inschakelen en testen op Windows
Dit is de klassieke oplossing: als PowerShell-remotebeheer niet werkt, is de kans groot dat WinRM nog niet is geconfigureerd. Standaard is het in de desktopversies van Windows 10/11 uitgeschakeld, wat nogal frustrerend is als je scripts of beheer op afstand wilt uitvoeren. Op Windows Server? Meestal al ingeschakeld, maar op een gewone desktop? Niet zo snel.
Controleer eerst of WinRM actief is door het volgende commando uit te voeren:
Test-WSMan
Als er een foutmelding verschijnt dat de client geen verbinding kan maken of dat de WinRM-service niet gevonden is, is dat een teken dat u deze moet inschakelen. Controleer of de WinRM-service actief is met:
Get-Service -Name WinRM
Als je ziet dat het is gestopt of dat er een listener ontbreekt, is het tijd om het in te schakelen. De eenvoudigste manier is door het volgende commando uit te voeren:
Enable-PSRemoting
of
winrm quickconfig
Deze opdracht voert een heleboel taken op de achtergrond uit: hij start de WinRM-service, configureert firewallregels voor poorten 5985 (HTTP) en 5986 (HTTPS), maakt een listener aan en registreert de standaard PowerShell-sessieconfiguraties. Houd er rekening mee dat, met name in niet-domeinomgevingen, de firewallregels mogelijk handmatig moeten worden aangepast of dat er fouten kunnen optreden met betrekking tot netwerkprofielen.
Bij het uitvoeren van het programma winrm quickconfigworden alle bovenstaande stappen automatisch uitgevoerd. In sommige configuraties, met name in werkgroep- of openbare netwerken, kunt u een foutmelding zien met betrekking tot beperkingen in het netwerkprofiel. Om dit te omzeilen, kunt u het volgende uitvoeren:
Enable-PSRemoting –SkipNetworkProfileCheck -Force
En het zal alles instellen, zelfs als je netwerk openbaar is. Wees wel voorzichtig, want op onbeveiligde netwerken is je externe verkeer niet versleuteld, tenzij je HTTPS instelt in WinRM.
Controleer daarna of de luisteraar correct is ingesteld:
WinRM enumerate winrm/config/listener
Als alles goed is gegaan, zou je een HTTP-listener op poort 5985 moeten zien. Om te testen of externe opdrachten werken, probeer je verbinding te maken met een machine die je vertrouwt met behulp van:
Test-WSMan -ComputerName TargetComputerName
Als dat zonder fouten wordt geretourneerd, is alles in orde. Je kunt dan externe sessies starten met:
Enter-PSSession -ComputerName TargetComputerNameInvoke-Command -ComputerName TargetComputerName -ScriptBlock { Get-Process }
Opmerking: In sommige configuraties, met name bij verbindingen via IP of in werkgroepen, moet u de externe machine mogelijk toevoegen aan uw lijst met vertrouwde hosts.
Set-Item wsman:\localhost\client\TrustedHosts -Value "TargetIPOrName" -Force
Of, voor een snelle en eenvoudige oplossing, sta alles toe:
Set-Item wsman:\localhost\client\TrustedHosts -Value *
Meestal is dit voldoende om de verbinding op afstand tot stand te brengen. Houd er wel rekening mee dat de standaard Kerberos-authenticatie alleen werkt als beide machines zich in hetzelfde Active Directory-domein bevinden. Anders zijn HTTPS of NTLM (minder veilig) vereist.
Toegang tot externe PowerShell toestaan voor niet-beheerders
Normaal gesproken kunnen alleen leden van de lokale beheerdersgroep of de groep ‘Gebruikers voor beheer op afstand’ op afstand verbinding maken met PowerShell. Maar als u niet-bevoorrechte gebruikers toegang wilt geven, kunt u dat ook doen, zonder alle beheerdersrechten te verlenen.
Probeer in te loggen als een gewone gebruiker en de kans is groot dat je een “Toegang geweigerd”-foutmelding krijgt. Dat is geen verrassing. De standaardrechten staan alleen bepaalde groepen toe:
(Get-PSSessionConfiguration -Name Microsoft. PowerShell).Permission
Dit geeft doorgaans “AccessAllowed” terug voor ingebouwde groepen zoals:
- Beheerders
- Gebruikers voor beheer op afstand
Om een gebruiker toegang te geven tot beheer op afstand, hoeft u hem of haar alleen maar toe te voegen aan de groep “Gebruikers met beheer op afstand”.
Add-LocalGroupMember -Group "Remote Management Users" -Member "username"
Je kunt dat doen via de opdrachtregel of de grafische gebruikersinterface (Computerbeheer > Lokale gebruikers en groepen).Nadat je de gebruiker hebt toegevoegd, probeer je opnieuw verbinding te maken met die gebruiker. Het zou nu moeten werken.
Als u de precieze beveiligingsmachtigingen voor de PowerShell-sessieconfiguratie wilt aanpassen, kunt u de gebruikersinterface voor de beveiligingsbeschrijving openen met:
Set-PSSessionConfiguration -Name Microsoft. PowerShell -showSecurityDescriptorUI
Hier kunt u specifieke gebruikers/groepen toevoegen of machtigingen instellen zoals ‘Volledige controle’ of ‘Uitvoeren’.Voor gevorderden is het handig om de huidige machtigingen als een tekenreeks te exporteren, zodat u deze kunt repliceren op verschillende systemen.
(Get-PSSessionConfiguration -Name "Microsoft. PowerShell").SecurityDescriptorSDDL
Je kunt dezelfde machtigingen vervolgens elders toewijzen met:
$SDDL = "..." // your SDDL string"
Set-PSSessionConfiguration -Name Microsoft. PowerShell -SecurityDescriptorSddl $SDDL
Dit maakt het mogelijk om nauwkeurig te bepalen wie op afstand PowerShell-opdrachten mag uitvoeren, waardoor de beveiliging gewaarborgd blijft maar de flexibiliteit behouden blijft.
Hoe schakel je PowerShell-remotebeheer uit wanneer dit niet nodig is?
Als je dit wilt uitschakelen, voer dan het volgende commando uit:
Disable-PSRemoting -Force
Dit stopt de WinRM-service, verwijdert de listeners en schakelt de firewallregels uit. Maar let op: dit maakt niet alles automatisch ongedaan, dus mogelijk moet u de listeners handmatig verwijderen.
Remove-Item -Path WSMan:\Localhost\Listener\listener* -Recurse
En tot slot, stop en schakel de WinRM-service uit:
Stop-Service WinRM; Set-Service WinRM -StartupType Disabled -PassThru
Vergeet ook niet de firewallregels uit te schakelen als je het echt offline wilt halen:
Get-NetFirewallRule -DisplayGroup "Windows Remote Management" | Where-Object {$_. Enabled -eq "True"} | Disable-NetFirewallRuleOm te voorkomen dat beheerders op afstand toegang krijgen tot uw lokale accounttokens (met name beheerders), moet u mogelijk ook de registersleutel "LocalAccountTokenFilterPolicy" als volgt aanpassen:
reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" /v "LocalAccountTokenFilterPolicy" /t REG_DWORD /d 0 /fExtra: Schakel indien nodig externe PowerShell voor Exchange-gebruikers uit.
Als u Exchange Server (of Exchange Online) beheert, is het gebruikelijk dat gebruikers standaard toegang hebben tot externe PowerShell. Maar voor de beveiliging, met name voor niet-beheerders of serviceaccounts, is het beter om die toegang te beperken. U kunt controleren wie toegang heeft tot externe PowerShell met:
Get-User -ResultSize Unlimited -Filter 'RemotePowerShellEnabled -eq $true'En schakel externe toegang voor specifieke gebruikers uit door het volgende commando uit te voeren:
Set-User -Identity "[email protected]" -RemotePowerShellEnabled $falseDit helpt de beveiliging te waarborgen en voorkomt onbedoelde of kwaadwillige acties vanuit accounts met beperkte bevoegdheden.
Samenvatting
Het instellen en gebruiken van PowerShell Remoting is niet superingewikkeld, maar er zijn een paar veelvoorkomende valkuilen met betrekking tot netwerkprofielen, firewallinstellingen en machtigingen. Eenmaal geconfigureerd, kan het enorm veel tijd besparen bij het beheren van meerdere externe servers of machines. Houd echter wel rekening met de beveiliging, vooral op openbare netwerken of in minder veilige omgevingen, en test altijd na elke wijziging.
Samenvatting
- Schakel PSRemoting in
Enable-PSRemotingmet ofwinrm quickconfig - Controleer de status van uw service en luisteraars.
- Voeg indien nodig vertrouwde hosts toe.
- Verleen externe toegang aan niet-beheerders via groepen.
- Schakel het uit wanneer het niet langer nodig is.
Disable-PSRemoting