Hoe u Enter-PSSession kunt gebruiken om externe opdrachten uit te voeren in een interactieve shell.

Hoe u Enter-PSSession kunt gebruiken voor beheer van externe PowerShell-sessies

De cmdlet Enter-PSSession is een van die tools die het beheer van meerdere Windows-machines op afstand echt kunnen vereenvoudigen. Als je een probleem wilt oplossen, configuraties wilt implementeren of gewoon een externe server wilt controleren, is dit meestal de eerste stap. In sommige configuraties werkt het misschien niet meteen, bijvoorbeeld door netwerkproblemen of problemen met de machtigingen. Maar als het eenmaal werkt, is het erg soepel. Houd er wel rekening mee dat je, afhankelijk van je omgeving, mogelijk een paar instellingen moet aanpassen of een aantal opdrachten moet uitvoeren om alles goed te laten communiceren. En ja, Windows maakt het soms net iets ingewikkelder dan nodig is.

In de meeste gevallen moet PowerShell-remotebeheer zijn ingeschakeld; anders kan er geen verbinding tot stand komen. Op Windows Server 2016 en nieuwer is PSRemoting standaard ingeschakeld, maar op desktops zoals Windows 10 of 11 moet u dit mogelijk handmatig inschakelen. Het is aan u om te controleren of uw computer hiervoor geschikt is. Als u geen toegang hebt, kunt u de sessie niet starten. Machtigingen zijn dus belangrijk.

Hoe je veelvoorkomende problemen met Enter-PSSession kunt oplossen

PowerShell-remotebeheer inschakelen op Windows 10/11 voor toegang op afstand

Standaard is PSRemoting uitgeschakeld op desktop-Windows-installaties (Win10/11), waarschijnlijk omdat Microsoft denkt dat de meeste gebruikers hiermee beveiligingsrisico’s zouden lopen. Om het in te schakelen, opent u PowerShell als beheerder en voert u de volgende opdracht uit:

Enable-PSRemoting -Force

Deze opdracht doet veel: WinRM wordt ingeschakeld, automatisch gestart, de firewall wordt aangepast en de service wordt opnieuw gestart. Soms, als u zich op een openbaar netwerk bevindt, moet u mogelijk -SkipNetworkProfileCheck toevoegen, zoals in het volgende voorbeeld:

Enable-PSRemoting -SkipNetworkProfileCheck -Force

Dit is belangrijk omdat WinRM op openbare wifi-netwerken of bij bepaalde netwerkprofielen met strengere beveiligingsvoorschriften mogelijk uitgeschakeld blijft.

Controleren of WinRM daadwerkelijk actief is en luistert.

Als de verbinding via de externe verbinding nog steeds niet lukt, controleer dan of de WinRM-service correct werkt. Voer het volgende commando uit:

Get-Service WinRM | Select MachineName, Name, Status, StartType

Alles in orde? De status zou ‘Actief’ moeten zijn en het opstarttype ‘ Automatisch’. Zo niet, start het dan handmatig met:

Start-Service WinRM

Soms blokkeert de firewall inkomend WinRM-verkeer. Controleer of TCP-poort 5985 (HTTP) of 5986 (HTTPS als SSL is ingeschakeld) openstaat in uw firewallregels. U kunt dit toevoegen of controleren via de bestaande Windows Firewall-instellingen of via PowerShell, bijvoorbeeld:

New-NetFirewallRule -Name "WinRM HTTP" -DisplayName "Allow WinRM over HTTP" -Protocol TCP -LocalPort 5985 -Action Allow

Uw gebruiker toegang geven tot de juiste groep

Om veiligheidsredenen mogen alleen bepaalde gebruikersgroepen op afstand verbinding maken. Normaal gesproken moet uw account deel uitmaken van de groep Beheerders of Gebruikers voor beheer op afstand. In sommige configuraties moet u uzelf mogelijk expliciet toevoegen. Voer dit commando uit in PowerShell:

Add-LocalGroupMember -Group "Remote Management Users" -Member "YourUsername"

Vervang dit YourUsernamedoor uw daadwerkelijke gebruikersnaam. Dat is meestal voldoende, tenzij Active Directory-beleid dit blokkeert.

Een externe host toevoegen als vertrouwde host

Als u probeert verbinding te maken via een IP-adres of CNAME (en niet via een volledig domein), kunt u tegen TrustedHosts-beperkingen aanlopen. Om dit op te lossen, voert u het volgende commando uit:

Set-Item WSMan:\localhost\Client\TrustedHosts -Value "192.168.1.100"

Of, voor meerdere hosts of wildcards:

Set-Item WSMan:\localhost\Client\TrustedHosts -Value "*.woshub.com"

Start daarna de WinRM-service opnieuw op met:

Restart-Service WinRM

Houd er rekening mee dat het toevoegen van hosts aan TrustedHosts de beveiligingsrisico’s kan verhogen, dus doe dit met de nodige voorzichtigheid.

Testen van lokale of externe connectiviteit

Controleer de lokale configuratie voordat u probeert op afstand verbinding te maken met:

Test-WSMan -ComputerName localhost

Als de versie-informatie zonder fouten wordt weergegeven, is uw WinRM-configuratie in orde. Zo niet, dan moet u eerst de serverkant corrigeren. Houd er rekening mee dat als remote toegang niet is ingeschakeld, u een bericht krijgt dat er geen verbinding kan worden gemaakt en fouten ziet zoals:

Test-WSMan : 

Making the Actual Connection

Once everything’s ready, connecting is straightforward:

Enter-PSSession -ComputerName your_remote_host

If you need credentials, use the -Credentials switch:

Enter-PSSession -ComputerName your_remote_host -Credentials (Get-Credential)

This will pop up a login box. On one setup it worked right away, on another I had to make sure the user was in the right group and WinRM was enabled everywhere. Weird thing is sometimes it’s flakey, especially if you’re mixing domain and workgroup machines or trying over IP without proper trust. Just keep an eye on those details.

Over SSH — Modern Twist for PowerShell Remoting

Up to PowerShell 7+, you can also connect over SSH if you have the built-in OpenSSH server enabled on the remote Windows machine (fingers crossed it’s set up).Use:

Enter-PSSession -HostName user@hostname

Or with an SSH key:

Enter-PSSession -HostName user@hostname -KeyFilePath C:\PS\max_rsa_key

This is kind of a newer, more secure way, especially if WinRM isn’t an option.

Remember, if connecting over IP, you'll likely need to add the host to the TrustedHosts list, because of how default WinRM settings work. Otherwise, authentication gets weird.

In general, using Enter-PSSession and related commands like New-PSSession are perfect for interactive sessions — but for scripting or running on multiple machines at once, you’d probably jump into Invoke-Command.

And of course, Windows has to keep us on our toes with all these hoops. If something isn’t working, it’s usually worth double-checking the firewalls, permissions, and whether everything is enabled properly. Because of course, Windows has to make it just a little more complicated than it needs to be.