Met PowerShell Remoting kunt u PowerShell-opdrachten uitvoeren of toegang krijgen tot volledige PowerShell-sessies op externe Windows-systemen. Het is vergelijkbaar met SSH voor toegang tot externe terminals op andere besturingssystemen.
PowerShell is standaard vergrendeld, dus u moet PowerShell Remoting inschakelen voordat u het gebruikt. Dit installatieproces is iets ingewikkelder als u een werkgroep gebruikt in plaats van een domein, bijvoorbeeld op een thuisnetwerk, maar we zullen u er doorheen helpen.
VERWANT: Hoe PowerShell verschilt van de Windows-opdrachtprompt
Schakel PowerShell Remoting in op de pc die u op afstand wilt gebruiken
Uw eerste stap is om PowerShell Remoting in te schakelen op de pc waarmee u externe verbindingen wilt maken. Op die pc moet u PowerShell openen met beheerdersrechten.
Druk in Windows 10 op Windows + X en kies vervolgens PowerShell (Admin) in het Power User-menu.
Druk in Windows 7 of 8 op Start en typ ‘powershell’. Klik met de rechtermuisknop op het resultaat en kies ‘Als administrator uitvoeren’.
Typ in het PowerShell-venster de volgende cmdlet (PowerShell-naam voor een opdracht) en druk op Enter:
Enable-PSRemoting -Force
Deze opdracht start de WinRM-service, stelt deze in om automatisch te starten met uw systeem en maakt een firewallregel die inkomende verbindingen toestaat. De -Force
een deel van de cmdlet vertelt PowerShell om deze acties uit te voeren zonder u voor elke stap te vragen.
Als uw pc’s deel uitmaken van een domein, hoeft u verder niet meer in te stellen. U kunt doorgaan met het testen van uw verbinding. Als uw computers deel uitmaken van een werkgroep – die ze waarschijnlijk op een thuisnetwerk of een klein bedrijfsnetwerk bevinden – moet u wat meer installatiewerk doen.
Opmerking: uw succes bij het opzetten van remoting in een domeinomgeving hangt volledig af van de configuratie van uw netwerk. Remoting kan automatisch worden uitgeschakeld (of zelfs ingeschakeld) door groepsbeleid dat is geconfigureerd door een beheerder. Mogelijk beschikt u ook niet over de machtigingen die u nodig hebt om PowerShell als beheerder uit te voeren. Neem zoals altijd contact op met uw beheerders voordat u iets als dit probeert. Ze hebben misschien goede redenen om de oefening niet toe te staan, of ze zijn misschien bereid om het voor je op te zetten.
Stel uw werkgroep op
Als uw computers zich niet op een domein bevinden, moet u nog een paar stappen uitvoeren om alles in te stellen. U zou Remoting al moeten hebben ingeschakeld op de pc waarmee u verbinding wilt maken, zoals we in de vorige sectie hebben beschreven.
VERWANT: Wat is het verschil tussen privé- en openbare netwerken in Windows?
Opmerking: om PowerShell Remoting te laten werken in een werkgroepomgeving, moet u uw netwerk configureren als een privé, niet als openbaar netwerk. Voor meer informatie over het verschil – en hoe u naar een privénetwerk kunt overschakelen als u al een openbaar netwerk hebt ingesteld – raadpleegt u onze gids over private versus publieke netwerken.
Vervolgens moet u de TrustedHosts-instelling configureren op zowel de pc waarmee u verbinding wilt maken en de pc (of pc’s) waarmee u verbinding wilt maken, zodat de computers elkaar vertrouwen. U kunt dit op twee manieren doen.
Als u zich op een thuisnetwerk bevindt waar u door wilt gaan en elke pc vertrouwt om op afstand verbinding te maken, kunt u de volgende cmdlet in PowerShell typen (nogmaals, u moet deze uitvoeren als beheerder).
Set-Item wsman:localhostclienttrustedhosts *
De asterisk is een jokerteken voor alle pc’s. Als u in plaats daarvan computers wilt beperken die verbinding kunnen maken, kunt u de asterisk vervangen door een door komma’s gescheiden lijst met IP-adressen of computernamen voor goedgekeurde pc’s.
Nadat u die opdracht hebt uitgevoerd, moet u de WinRM-service opnieuw starten zodat uw nieuwe instellingen van kracht worden. Typ de volgende cmdlet en druk op Enter:
Restart-Service WinRM
En vergeet niet dat u die twee cmdlets moet uitvoeren op de pc waarmee u verbinding wilt maken, evenals op alle pc’s waarmee u verbinding wilt maken.
Test de verbinding
Nu uw pc’s zijn ingesteld voor PowerShell Remoting, is het tijd om de verbinding te testen. Typ op de pc waarvan u toegang wilt krijgen tot het externe systeem de volgende cmdlet in PowerShell (vervang “COMPUTER” door de naam of het IP-adres van de externe pc) en druk op Enter:
Test-WsMan COMPUTER
Deze eenvoudige opdracht test of de WinRM-service op de externe pc wordt uitgevoerd. Als het succesvol is voltooid, ziet u informatie over de WinRM-service van de externe computer in het venster, wat aangeeft dat WinRM is ingeschakeld en dat uw pc kan communiceren. Als de opdracht mislukt, ziet u in plaats daarvan een foutmelding.
Voer een enkele opdracht op afstand uit
Om een opdracht op het externe systeem uit te voeren, gebruikt u de Invoke-Command
cmdlet met de volgende syntaxis:
Invoke-Command -ComputerName COMPUTER -ScriptBlock { COMMAND } -credential USERNAME
“COMPUTER” staat voor de naam of het IP-adres van de externe pc. “COMMAND” is het commando dat u wilt uitvoeren. “GEBRUIKERSNAAM” is de gebruikersnaam waarmee u de opdracht wilt uitvoeren zoals op de externe computer. U wordt gevraagd om een wachtwoord in te voeren voor de gebruikersnaam.
Hier is een voorbeeld. Ik wil de inhoud van de map C: op een externe computer bekijken met het IP-adres 10.0.0.22. Ik wil de gebruikersnaam “wjgle” gebruiken, dus ik zou het volgende commando gebruiken:
Invoke-Command -ComputerName 10.0.0.22 -ScriptBlock { Get-ChildItem C: } -credential wjgle
Start een externe sessie
Als u meerdere cmdlets hebt die u op de externe pc wilt uitvoeren, kunt u in plaats van herhaaldelijk de cmdlet Invoke-Command en het externe IP-adres te typen, een externe sessie starten. Typ gewoon de volgende cmdlet en druk op Enter:
Enter-PSSession -ComputerName COMPUTER -Credential USER
Vervang opnieuw “COMPUTER” door de naam of het IP-adres van de externe pc en vervang “USER” door de naam van het gebruikersaccount dat u wilt oproepen.
Uw prompt verandert om de externe computer aan te geven waarmee u bent verbonden, en u kunt een willekeurig aantal PowerShell-cmdlets rechtstreeks op het externe systeem uitvoeren.