Hoe u uw pc vanaf uw mobiele telefoon kunt bedienen met PowerShell Remoting

Laatste update: 15/10/2025

  • Voor externe toegang wordt WinRM/WS-Man (HTTP/HTTPS) gebruikt en zijn 1-op-1-, 1-op-veel- en permanente sessies met beveiligingscontroles mogelijk.
  • Met Enable-PSRemoting configureert u de service, listeners en firewall. Voor HTTPS zijn een geldig certificaat en een overeenkomende CN/SAN vereist.
  • De resultaten worden gedeserialiseerd geretourneerd; methoden worden aangeroepen binnen het externe scriptblok en aangepaste eindpunten worden gebruikt voor gedetailleerde delegatie.
PowerShell-op afstand

U automatiseert misschien al veel taken lokaal met PowerShell, maar waar doet u dat nu echt? PowerShell Remoting maakt het verschil Het is wanneer u opdrachten uitvoert op externe machines, of het er nu een paar of honderden zijn, interactief of parallel. Deze technologie, beschikbaar sinds Windows PowerShell 2.0 en verbeterd sinds 3.0, is gebaseerd op WS-Management (WinRM) en converteert PowerShell in een robuust, schaalbaar en veilig kanaal voor beheer op afstand.

Allereerst is het belangrijk om twee belangrijke ideeën te begrijpen: cmdlets met -Computernaam-parameter (bijvoorbeeld Get-Process of Get-Service) zijn niet de door Microsoft aanbevolen langetermijnroute, en PowerShell Remoting werkt niet als een 'hack'. Sterker nog, dwingt wederzijdse authenticatie af, audit logs en respecteert uw gebruikelijke machtigingen, zonder dat er inloggegevens worden opgeslagen of op magische wijze iets met superrechten wordt uitgevoerd.

Wat is PowerShell Remoting en waarom zou u het gebruiken?

met PowerShell Remoting kan bijna elke opdracht op afstand uitvoeren die u in een lokale sessie kunt starten, van het bevragen van services tot het implementeren van configuraties, en dat op honderden computers tegelijk. In tegenstelling tot cmdlets die -ComputerName accepteren (veel gebruiken DCOM/RPC), is Remoting reist via WS-Man (HTTP/HTTPS)die beter bestand is tegen firewalls, parallellisme mogelijk maakt en werk naar de externe host verplaatst in plaats van naar de client.

Dit vertaalt zich in drie praktische voordelen: betere prestaties bij grootschalige uitvoeringen, minder wrijving in netwerken met beperkende regels en een beveiligingsmodel dat consistent is met Kerberos/HTTPS. Bovendien, door niet afhankelijk te zijn van elke cmdlet om zijn eigen remote te implementeren, Het werkt voor elk script of elke rol die op de bestemming beschikbaar is.

Standaard worden recente Windows-servers geleverd met Remoting ingeschakeld; in Windows 10/11 je activeert het met één cmdlet. En ja, u kunt alternatieve referenties, permanente sessies, aangepaste eindpunten en meer gebruiken.

Let op: op afstand werken is niet synoniem met alles openen. Standaard is alleen beheerders Ze kunnen verbinding maken en acties worden uitgevoerd onder hun identiteit. Als u gedetailleerde delegering nodig hebt, kunt u met aangepaste eindpunten alleen de essentiële opdrachten weergeven.

PowerShell-architectuur voor externe toegang

Hoe het binnenin werkt: WinRM, WS-Man en ports

PowerShell Remoting werkt volgens een client-servermodel. De client verzendt WS-Management-verzoeken via HTTP (5985/TCP) of HTTPS (5986/TCP)Op het doel luistert de Windows Remote Management (WinRM)-service, lost het eindpunt op (sessieconfiguratie) en host de PowerShell-sessie op de achtergrond (wsmprovhost.exe-proces). het retourneren van geserialiseerde resultaten naar de client in XML via SOAP.

De eerste keer dat u Remoting inschakelt, worden listeners geconfigureerd, wordt de juiste firewalluitzondering geopend en worden sessieconfiguraties gemaakt. Vanaf PowerShell 6+ bestaan ​​er meerdere edities naast elkaar en PSRemoting inschakelen Registreert eindpunten met namen die de versie weerspiegelen (bijvoorbeeld PowerShell.7 en PowerShell.7.xy).

Exclusieve inhoud - Klik hier  Wereldwijde waarschuwing voor een kritieke kwetsbaarheid in Google Chrome: wat u moet weten en hoe u uzelf kunt beschermen

Als u alleen HTTPS in uw omgeving toestaat, kunt u een veilige luisteraar met een certificaat uitgegeven door een vertrouwde CA (aanbevolen). Een andere mogelijkheid is om TrustedHosts op een beperkte, risicobewuste manier te gebruiken, voor werkgroepscenario's of computers buiten het domein.

Houd er rekening mee dat Powershell Remoting kan samengaan met cmdlets met -ComputerName, maar Microsoft pusht WS-Man als de standaard en toekomstbestendige manier voor beheer op afstand.

PowerShell Remoting inschakelen en nuttige parameters

Op Windows opent u PowerShell gewoon als beheerder en voert u het uit PSRemoting inschakelenHet systeem start WinRM, configureert automatisch starten, schakelt de listener in en maakt de juiste firewallregels aan. Op clients met een openbaar netwerkprofiel kunt u dit bewust toestaan ​​met -SkipNetworkProfileCheck (en versterk dit vervolgens met specifieke regels):

Enable-PSRemoting
Enable-PSRemoting -Force
Enable-PSRemoting -SkipNetworkProfileCheck -Force

 

De syntaxis maakt het ook mogelijk, -Bevestigen y -Wat als voor wijzigingsbeheer. Onthoud: Het is alleen beschikbaar op Windows, en u moet de verhoogde console gebruiken. De regels die worden gemaakt, verschillen tussen de Server- en Client-edities, met name op openbare netwerken, waar ze standaard beperkt zijn tot het lokale subnet, tenzij u het bereik uitbreidt (bijvoorbeeld met Set-NetFirewallRule).

Om reeds opgenomen sessieconfiguraties weer te geven en te bevestigen dat alles gereed is, gebruikt u Get-PSSessionConfigurationAls de PowerShell.x- en Workflow-eindpunten worden weergegeven, is het Remoting-framework operationeel.

Externe sessie met PowerShell

Gebruiksmodi: 1 op 1, 1 op veel en permanente sessies

Als u een interactieve console op één computer nodig hebt, kunt u kiezen voor: Enter-PSSessionDe prompt verschijnt en alles wat u uitvoert, wordt naar de externe host gestuurd. U kunt inloggegevens hergebruiken met Get-Credential om te voorkomen dat u ze steeds opnieuw moet invoeren:

$cred = Get-Credential
Enter-PSSession -ComputerName dc01 -Credential $cred
Exit-PSSession

Als u opdrachten naar meerdere computers tegelijk wilt sturen, is dit de tool Roep-Command met een scriptblok. Standaard worden maximaal 32 gelijktijdige verbindingen gestart (instelbaar met -ThrottleLimit). De resultaten worden geretourneerd als gedeserialiseerde objecten (zonder “live” methoden):

Invoke-Command -ComputerName dc01,sql02,web01 -ScriptBlock { Get-Service -Name W32Time } -Credential $cred

Moet je een methode zoals .Stop() of .Start() aanroepen? Doe het. binnen het scriptblok in de externe context, niet het lokale gedeserialiseerde object, en dat is alles. Als er een equivalente cmdlet is (Stop-Service/Start-Service), is het meestal beter om die te gebruiken voor de duidelijkheid.

Om de kosten van het starten en beëindigen van sessies bij elk gesprek te vermijden, maakt u een Blijvende PS-sessie en hergebruik het voor meerdere aanroepen. Gebruik New-PSSession om de verbinding te maken en Invoke-Command-Session om de tunnel te hergebruiken. Vergeet niet om deze te sluiten met Remove-PSSession als je klaar bent.

Serialisatie, limieten en goede praktijken

Een belangrijk detail: tijdens het reizen worden voorwerpen "+plat" en komen ze aan als gedeserialiseerde snapshots, met eigenschappen maar zonder methoden. Dit is opzettelijk en bespaart bandbreedte, maar het betekent dat je geen leden kunt gebruiken die logica uitvoeren (zoals .Kill()) op de lokale kopie. De oplossing ligt voor de hand: roep die methoden aan. van een afstand en als u alleen bepaalde velden nodig hebt, filter dan met Select-Object om minder gegevens te versturen.

Exclusieve inhoud - Klik hier  Hoe voorkom je schade aan je bestanden?

Vermijd in scripts Enter-PSSession (bedoeld voor interactief gebruik) en gebruik Invoke-Command met scriptblokken. Als u meerdere aanroepen verwacht of de status (variabelen, geïmporteerde modules) wilt behouden, gebruik permanente sessies en indien van toepassing, verbreek/verbind ze opnieuw met Disconnect-PSSession/Connect-PSSession in PowerShell 3.0+.

Authenticatie, HTTPS en off-domeinscenario's

In een domein is native authenticatie Kerberos En alles verloopt soepel. Wanneer het apparaat de servernaam niet kan verifiëren, of wanneer u verbinding maakt met een CNAME-IP of alias, hebt u een van de volgende twee opties nodig: 1) Listener HTTPS met certificaat uitgegeven door een CA die u vertrouwt, of 2) voeg de bestemming (naam of IP) toe aan TrustedHosts en gebruik inloggegevensDe tweede optie schakelt wederzijdse authenticatie voor die host uit en beperkt de reikwijdte dus tot het noodzakelijke minimum.

Voor het instellen van een HTTPS-listener is een certificaat vereist (idealiter van uw PKI of een openbare CA), geïnstalleerd in de teamopslag en gekoppeld aan WinRM. Poort 5986/TCP wordt vervolgens geopend in de firewall en vanaf de client gebruikt. -Gebruik SSL in externe cmdlets. Voor clientcertificaatauthenticatie kunt u een certificaat toewijzen aan een lokaal account en verbinding maken met -CertificaatDuimafdruk (Enter-PSSession accepteert dit niet rechtstreeks; maak eerst de sessie aan met New-PSSession.)

De tweede hop en delegeren van geloofsbrieven

De bekende “dubbele hop” verschijnt wanneer u, na verbinding te hebben gemaakt met een server, die server nodig hebt om toegang te krijgen tot een derde hulpbron namens u (bijvoorbeeld een SMB-share). Er zijn twee benaderingen om dit mogelijk te maken: CredSSP en resource-gebaseerde, beperkte Kerberos-delegatie.

met CredSSP U stelt de client en de tussenpersoon in staat om inloggegevens expliciet te delegeren en stelt een beleid (GPO) in om delegeren naar specifieke computers toe te staan. Dit is snel te configureren, maar minder veilig omdat de inloggegevens in platte tekst binnen de versleutelde tunnel worden verzonden. Beperk altijd bronnen en bestemmingen.

Het voorkeursalternatief in domein is de beperkte Kerberos-delegatie (resource-based constrained delegation) in moderne AD. Hierdoor kan het eindpunt vertrouwen op het ontvangen van delegatie van het middlepoint voor specifieke services, waardoor uw identiteit niet wordt prijsgegeven bij de eerste verbinding. Vereist recente domeincontrollers en een bijgewerkte RSAT.

Aangepaste eindpunten (sessieconfiguraties)

Een van de pareltjes van Remoting is het kunnen registreren van verbindingspunten met op maat gemaakte mogelijkheden en beperkingenEerst genereer je een bestand met New-PSSessionConfigurationFile (modules om voor te laden, zichtbare functies, aliassen, ExecutionPolicy, LanguageMode, etc.), en vervolgens registreer je het met Register-PSSessionConfiguration, waar je kunt instellen RunAsCredential en machtigingen (SDDL of GUI-interface met -ShowSecurityDescriptorUI).

Voor veilige delegatie stelt u alleen het noodzakelijke bloot met -VisibleCmdlets/-VisibleFunctions en schakelt u indien nodig vrije scripting uit met Taalmodus Beperkte taal of NoLanguage. Als u FullLanguage verlaat, zou iemand een scriptblok kunnen gebruiken om niet-blootgestelde opdrachten aan te roepen, die, in combinatie met RunAs, het zou een gat zijn. Ontwerp deze eindpunten met een vergrootglas en documenteer hun reikwijdte.

Domeinen, GPO's en Groupware

In AD kunt u Powershell Remoting op schaal implementeren met GPO: automatische configuratie van WinRM-listeners toestaan, stel de service in op Automatisch, en maak de firewalluitzondering. Houd er rekening mee dat GPO's instellingen wijzigen, maar de service niet altijd direct inschakelen; soms moet u opnieuw opstarten of een gpupdate forceren.

Exclusieve inhoud - Klik hier  Hoe Norton Mobile Security te gebruiken?

In werkgroepen (niet-domein), configureer Remoting met PSRemoting inschakelenStel TrustedHosts in op de client (winrm set winrm/config/client @{TrustedHosts=»host1,host2″}) en gebruik lokale referenties. Voor HTTPS kunt u zelfondertekende certificaten koppelen, hoewel het raadzaam is een vertrouwde CA te gebruiken en de naam valideren die u in -ComputerName in het certificaat zult gebruiken (CN/SAN-overeenkomst).

Belangrijkste cmdlets en syntaxis

Een handvol commando's bestrijkt de 90% van de dagelijkse scenario'sActiveren/deactiveren:

Enable-PSRemoting    
Disable-PSRemoting

Interactieve sessie 1 op 1 en uitgang:

Enter-PSSession -ComputerName SEC504STUDENT 
Exit-PSSession

1 tot veel, met parallellisme en referenties:

Invoke-Command -ComputerName dc01,sql02,web01 -ScriptBlock { Get-Service W32Time } -Credential $cred

Blijvende sessies en hergebruiken:

$s = New-PSSession -ComputerName localhost -ConfigurationName PowerShell.7
Invoke-Command -Session $s -ScriptBlock { $PSVersionTable }
Remove-PSSession $s

Testen en WinRM Bruikbaar:

Test-WSMan -ComputerName host
winrm get winrm/config
winrm enumerate winrm/config/listener
winrm quickconfig -transport:https

Praktische notities over firewall, netwerk en poorten

Open 5985/TCP voor HTTP en 5986/TCP voor HTTPS op de doelcomputer en op elke tussenliggende firewallOp Windows-clients maakt Enable-PSRemoting regels voor domein- en privéprofielen. Voor openbare profielen is het beperkt tot het lokale subnet, tenzij u de scope wijzigt met Set-NetFirewallRule -RemoteAddress Any (een waarde die u kunt beoordelen op basis van uw risico).

Als u SOAR/SIEM-integraties gebruikt die externe opdrachten uitvoeren (bijvoorbeeld vanuit XSOAR), zorg er dan voor dat de server DNS-resolutie naar de hosts, connectiviteit met 5985/5986 en inloggegevens met voldoende lokale rechten. In sommige gevallen kan aanpassing van NTLM/Basic-authenticatie nodig zijn (bijvoorbeeld bij gebruik van een lokale gebruiker in Basic met SSL).

Enable-PSRemoting-parameters (operationele samenvatting)

-Confirm vraagt ​​om bevestiging voordat er wordt uitgevoerd; -Force negeert de waarschuwingen en breng de nodige wijzigingen aan; -SkipNetworkProfileCheck schakelt externe toegang in op openbare clientnetwerken (standaard beperkt tot het lokale subnet); -WhatIf laat zien wat er zou gebeuren zonder wijzigingen toe te passen. Bovendien ondersteunt het, net als elke standaard cmdlet, gemeenschappelijke parameters (-Verbose, -ErrorAction, enz.).

Houd er rekening mee dat met 'Inschakelen' geen HTTPS-listeners of -certificaten voor u worden aangemaakt. Als u vanaf het begin end-to-end-encryptie en authenticatie op basis van gecertificeerde, configureer de HTTPS-listener en valideer CN/SAN aan de hand van de naam die u in -ComputerName wilt gebruiken.

Nuttige WinRM- en PowerShell-opdrachten voor externe toegang

sommige essentiële artikelen voor op het bed voor dag tot dag:

winrm get winrm/config
winrm enumerate winrm/config/listener
Set-NetFirewallRule -Name 'WINRM-HTTP-In-TCP' -RemoteAddress Any
Test-WSMan -ComputerName host -Authentication Default -Credential (Get-Credential)
New-PSSession -ComputerName host 
Enter-PSSession -ComputerName host 
Enable-PSRemoting -SkipNetworkProfileCheck -Force

Bij het beheer van Windows op schaal kunt u met Remoting overstappen van 'computer-tot-computer' naar een declaratieve en veilige aanpak. Door de combinatie van persistente sessies, sterke authenticatie (Kerberos/HTTPS), beperkte eindpunten en duidelijke traces voor diagnostiek, je krijgt snelheid en controle zonder in te leveren op beveiliging of auditing. Als u ook de GPO-activering standaardiseert en speciale gevallen (TrustedHosts, double hop, certificaten) beheert, beschikt u over een solide extern platform voor dagelijkse werkzaamheden en incidentrespons.

onzichtbare malware
Gerelateerd artikel:
Hoe u uw pc kunt beschermen tegen onzichtbare malware zoals XWorm en NotDoor