about_Remote_Requirements
Korte beschrijving
Beschrijft de systeemvereisten en configuratievereisten voor het uitvoeren van externe opdrachten in PowerShell.
Lange beschrijving
In dit onderwerp worden de systeemvereisten, gebruikersvereisten en resourcevereisten beschreven voor het tot stand brengen van externe verbindingen en het uitvoeren van externe opdrachten in PowerShell. Het bevat ook instructies voor het configureren van externe bewerkingen.
Notitie
Veel cmdlets (waaronder de Get-ServiceGet-EventLogGet-ProcessGet-WMIObjectcmdlets, en Get-WinEvent cmdlets) ophalen objecten van externe computers met behulp van Microsoft .NET Framework methoden om de objecten op te halen. Ze maken geen gebruik van de externe PowerShell-infrastructuur. De vereisten in dit document zijn niet van toepassing op deze cmdlets.
Lees de beschrijving van de parameter ComputerName van de cmdlets van de cmdlets, maar geen externe communicatie van PowerShell gebruiken.
Systeemvereisten
Als u externe sessies wilt uitvoeren op Windows PowerShell 3.0, moeten de lokale en externe computers het volgende hebben:
- Windows PowerShell 3.0 of hoger
- Microsoft .NET Framework 4 of hoger
- Windows Remote Management 3.0
Als u externe sessies wilt uitvoeren op Windows PowerShell 2.0, moeten de lokale en externe computers het volgende hebben:
- Windows PowerShell 2.0 of hoger
- Microsoft .NET Framework 2.0 of hoger
- Windows Remote Management 2.0
U kunt externe sessies maken tussen computers met Windows PowerShell 2.0 en Windows PowerShell 3.0. Functies die alleen worden uitgevoerd op Windows PowerShell 3.0, zoals de mogelijkheid om verbinding te maken en opnieuw verbinding te maken met sessies, zijn echter alleen beschikbaar wanneer beide computers Windows PowerShell 3.0 worden uitgevoerd.
Gebruik de $PSVersionTable automatische variabele om het versienummer van een geïnstalleerde versie van PowerShell te vinden.
Windows Remote Management (WinRM) 3.0 en Microsoft .NET Framework 4 zijn opgenomen in Windows 8, Windows Server 2012 en nieuwere releases van het Windows-besturingssysteem. WinRM 3.0 is opgenomen in Windows Management Framework 3.0 voor oudere besturingssystemen. Als de computer niet beschikt over de vereiste versie van WinRM of de Microsoft .NET Framework, mislukt de installatie.
Gebruikersmachtigingen
Als u externe sessies wilt maken en externe opdrachten wilt uitvoeren, moet de huidige gebruiker standaard lid zijn van de groep Administrators op de externe computer of de referenties van een beheerder opgeven. Anders mislukt de opdracht.
De vereiste machtigingen voor het maken van sessies en het uitvoeren van opdrachten op een externe computer (of in een externe sessie op de lokale computer) worden ingesteld door de sessieconfiguratie (ook wel een eindpunt genoemd) op de externe computer waarmee de sessie verbinding maakt. Met name bepaalt de beveiligingsdescriptor voor de sessieconfiguratie wie toegang heeft tot de sessieconfiguratie en wie deze kan gebruiken om verbinding te maken.
De beveiligingsdescriptors voor de standaardsessieconfiguraties, Microsoft.PowerShell, Microsoft.PowerShell32 en Microsoft.PowerShell.Workflow, staan alleen toegang toe tot leden van de groep Administrators .
Als de huidige gebruiker niet gemachtigd is om de sessieconfiguratie te gebruiken, mislukt de opdracht voor het uitvoeren van een opdracht (die gebruikmaakt van een tijdelijke sessie) of het maken van een permanente sessie op de externe computer. De gebruiker kan de ConfigurationName-parameter van cmdlets gebruiken die sessies maken om een andere sessieconfiguratie te selecteren, indien beschikbaar.
Leden van de groep Administrators op een computer kunnen bepalen wie gemachtigd is om op afstand verbinding te maken met de computer door de beveiligingsdescriptors te wijzigen in de standaardsessieconfiguraties en door nieuwe sessieconfiguraties te maken met verschillende beveiligingsdescriptors.
Zie about_Session_Configurations (Engelstalig) voor meer informatie over sessieconfiguraties.
Windows-netwerklocaties
Vanaf Windows PowerShell 3.0 kan de Enable-PSRemoting cmdlet externe communicatie inschakelen voor client- en serverversies van Windows op privé-, domein- en openbare netwerken.
Op serverversies van Windows met privé- en domeinnetwerken maakt de Enable-PSRemoting cmdlet firewallregels die onbeperkte externe toegang toestaan. Er wordt ook een firewallregel gemaakt voor openbare netwerken die externe toegang alleen vanaf computers in hetzelfde lokale subnet toestaat. Deze lokale subnetfirewallregel is standaard ingeschakeld voor serverversies van Windows op openbare netwerken, maar Enable-PSRemoting past de regel opnieuw toe voor het geval deze is gewijzigd of verwijderd.
In clientversies van Windows met privé- en domeinnetwerken maakt de Enable-PSRemoting cmdlet standaard firewallregels die onbeperkte externe toegang toestaan.
Als u externe communicatie wilt inschakelen voor clientversies van Windows met openbare netwerken, gebruikt u de parameter SkipNetworkProfileCheck van de Enable-PSRemoting cmdlet. Er wordt een firewallregel gemaakt die externe toegang alleen toestaat vanaf computers in hetzelfde lokale subnet.
Als u de lokale subnetbeperking voor openbare netwerken wilt verwijderen en externe toegang vanaf alle locaties in client- en serverversies van Windows wilt toestaan, gebruikt u de Set-NetFirewallRule cmdlet in de NetSecurity-module . Voer de volgende opdracht uit:
Set-NetFirewallRule -Name "WINRM-HTTP-In-TCP-PUBLIC" -RemoteAddress Any
Notitie
De naam van de firewallregel kan verschillen voor verschillende versies van Windows. Gebruik Get-NetFirewallRule dit om een lijst met regels weer te geven. Voordat u de firewallregel inschakelt, bekijkt u de beveiligingsinstellingen in de regel om te controleren of de configuratie geschikt is voor uw omgeving.
In Windows PowerShell 2.0 maakt u op serverversies van Windows Enable-PSRemoting firewallregels die externe toegang toestaan op alle netwerken.
In Windows PowerShell 2.0 maakt u in clientversies van Windows Enable-PSRemoting alleen firewallregels op privé- en domeinnetwerken. Als de netwerklocatie openbaar is, Enable-PSRemoting mislukt dit.
Als administrator uitvoeren
Beheerdersbevoegdheden zijn vereist voor de volgende externe bewerkingen:
Een externe verbinding tot stand brengen met de lokale computer. Dit wordt vaak een 'loopback'-scenario genoemd.
Sessieconfiguraties beheren op de lokale computer.
WS-Management-instellingen op de lokale computer weergeven en wijzigen. Dit zijn de instellingen in het LocalHost-knooppunt van het WSMAN-station: station.
Als u deze taken wilt uitvoeren, moet u PowerShell starten met de optie Uitvoeren als administrator, zelfs als u lid bent van de groep Administrators op de lokale computer.
In Windows 7 en in Windows Server 2008 R2 kunt u PowerShell starten met de optie Uitvoeren als administrator :
- Klik op Start, klik op Alle programma's, klik op Accessoires en klik vervolgens op de PowerShell-map.
- Klik met de rechtermuisknop op PowerShell en klik vervolgens op Uitvoeren als beheerder.
Windows PowerShell starten met de optie Uitvoeren als administrator:
- Klik op Start, klik op Alle programma's en klik vervolgens op de PowerShell-map.
- Klik met de rechtermuisknop op PowerShell en klik vervolgens op Uitvoeren als beheerder.
De optie Uitvoeren als administrator is ook beschikbaar in andere Windows Verkenner-vermeldingen voor PowerShell, inclusief snelkoppelingen. Klik met de rechtermuisknop op het item en klik vervolgens op Uitvoeren als beheerder.
Wanneer u PowerShell start vanuit een ander programma, zoals Cmd.exe, gebruikt u de optie Uitvoeren als administrator om het programma te starten.
Uw computer configureren voor externe toegang
Computers met alle ondersteunde versies van Windows kunnen externe verbindingen tot stand brengen met en externe opdrachten uitvoeren in PowerShell zonder configuratie. Als u echter verbindingen wilt ontvangen en gebruikers toestaat om lokale en externe door de gebruiker beheerde PowerShell-sessies ('PSSessions') te maken en opdrachten uit te voeren op de lokale computer, moet u Externe communicatie van PowerShell op de computer inschakelen.
Windows Server 2012 en nieuwere versies van Windows Server zijn standaard ingeschakeld voor externe communicatie met PowerShell. Als de instellingen worden gewijzigd, kunt u de standaardinstellingen herstellen door de cmdlet uit te Enable-PSRemoting voeren.
In alle andere ondersteunde versies van Windows moet u de Enable-PSRemoting cmdlet uitvoeren om externe communicatie van PowerShell in te schakelen.
De externe functies van PowerShell worden ondersteund door de WinRM-service. Dit is de Microsoft-implementatie van het WS-management-protocol (Web Services for Management). Wanneer u externe communicatie van PowerShell inschakelt, wijzigt u de standaardconfiguratie van WS-Management en voegt u systeemconfiguratie toe waarmee gebruikers verbinding kunnen maken met WS-Management.
PowerShell configureren voor het ontvangen van externe opdrachten:
- Start PowerShell met de optie Uitvoeren als administrator .
- Typ bij de opdrachtprompt:
Enable-PSRemoting
Als u wilt controleren of externe communicatie juist is geconfigureerd, voert u een testopdracht uit, zoals de volgende opdracht, waarmee een externe sessie op de lokale computer wordt gemaakt.
New-PSSession
Als externe toegang juist is geconfigureerd, maakt de opdracht een sessie op de lokale computer en retourneert een object dat de sessie vertegenwoordigt. De uitvoer moet lijken op de volgende voorbeelduitvoer:
Id Name ComputerName State ConfigurationName
-- ---- ------------ ----- -----
1 Session1 localhost Opened Microsoft.PowerShell
Als de opdracht mislukt, raadpleegt u about_Remote_Troubleshooting.
Meer informatie over beleidsregels
Wanneer u op afstand werkt, gebruikt u twee exemplaren van PowerShell, één op de lokale computer en één op de externe computer. Als gevolg hiervan wordt uw werk beïnvloed door het Windows-beleid en het PowerShell-beleid op de lokale en externe computers.
Over het algemeen geldt dat het beleid op de lokale computer van kracht is voordat u verbinding maakt en wanneer u verbinding maakt. Wanneer u de verbinding gebruikt, zijn de beleidsregels op de externe computer van kracht.
Basisverificatiebeperkingen voor Linux en macOS
Wanneer u verbinding maakt vanuit een Linux- of macOS-systeem met Windows, wordt basisverificatie via HTTP niet ondersteund. Basisverificatie kan via HTTPS worden gebruikt door een certificaat op de doelserver te installeren. Het certificaat moet een CN-naam hebben die overeenkomt met de hostnaam, is niet verlopen of ingetrokken. Een zelfondertekend certificaat kan worden gebruikt voor testdoeleinden.
Zie Procedure: WINRM configureren voor HTTPS voor meer informatie.
Met de volgende opdracht, uitgevoerd vanaf een opdrachtprompt met verhoogde bevoegdheid, configureert u de HTTPS-listener in Windows met het geïnstalleerde certificaat.
$hostinfo = '@{Hostname="<DNS_NAME>"; CertificateThumbprint="<THUMBPRINT>"}'
winrm create winrm/config/Listener?Address=*+Transport=HTTPS $hostinfo
Selecteer Basic voor verificatie en -UseSSl aan de linux- of macOS-zijde.
Notitie
Basisverificatie kan niet worden gebruikt met domeinaccounts; een lokaal account is vereist en het account moet zich in de groep Administrators bevinden.
# The specified local user must have administrator rights on the target machine.
# Specify the unqualified username.
$cred = Get-Credential username
$session = New-PSSession -Computer <hostname> -Credential $cred `
-Authentication Basic -UseSSL
Een alternatief voor basisverificatie via HTTPS is onderhandelen. Dit resulteert in NTLM-verificatie tussen de client en server en nettolading wordt versleuteld via HTTP.
Hieronder ziet u het gebruik van Onderhandelen met New-PSSession:
# The specified user must have administrator rights on the target machine.
$cred = Get-Credential username@hostname
$session = New-PSSession -Computer <hostname> -Credential $cred `
-Authentication Negotiate
Notitie
Windows Server vereist een extra registerinstelling om beheerders, behalve de ingebouwde beheerder, in te schakelen om verbinding te maken met NTLM. Raadpleeg de registerinstelling LocalAccountTokenFilterPolicy onder Negotiate Authentication in Authentication for Remote Connections