- Fjernbetjening bruger WinRM/WS-Man (HTTP/HTTPS) og tillader 1-til-1, 1-til-mange og vedvarende sessioner med sikkerhedskontroller.
- Enable-PSRemoting konfigurerer tjenesten, lyttere og firewall; HTTPS kræver et gyldigt certifikat og CN/SAN-match.
- Resultaterne returneres deserialiseret; metoder kaldes i den eksterne scriptblok, og brugerdefinerede slutpunkter bruges til finjusteret delegering.
Du automatiserer måske allerede mange opgaver lokalt med PowerShell, men hvor gør du det egentlig? PowerShell Remoting gør forskellen Det er, når du kører kommandoer på eksterne maskiner, hvad enten det er et par eller hundredvis, interaktivt eller parallelt. Denne teknologi, der er tilgængelig siden Windows PowerShell 2.0 og forbedret siden 3.0, er baseret på WS-Management (WinRM) og konverterer PowerShell i en robust, skalerbar og sikker fjernadministrationskanal.
Først og fremmest er det vigtigt at forstå to nøgleideer: cmdlets med -ComputerName-parameter (f.eks. Get-Process eller Get-Service) er ikke den langsigtede løsning, som Microsoft anbefaler, og PowerShell Remoting fungerer ikke som et "hack". Faktisk, håndhæver gensidig godkendelse, reviderer logfiler og respekterer dine sædvanlige tilladelser, uden at gemme legitimationsoplysninger eller magisk køre noget med superrettigheder.
Hvad er PowerShell Remoting, og hvorfor skal man bruge det?
med PowerShell Remoting puedes udfør næsten enhver kommando eksternt som du kunne starte i en lokal session, fra at forespørge tjenester til at implementere konfigurationer, og gøre det på hundredvis af computere på én gang. I modsætning til cmdlets, der accepterer -ComputerName (mange bruger DCOM/RPC), kan Remoting rejser via WS-Man (HTTP/HTTPS), som er mere firewall-venlig, tillader parallelisme og aflaster arbejdet til den eksterne vært, ikke klienten.
Dette resulterer i tre praktiske fordele: bedre ydeevne ved massive henrettelser, mindre friktion i netværk med restriktive regler og en sikkerhedsmodel, der er i overensstemmelse med Kerberos/HTTPS. Desuden, ved ikke at være afhængig af hver cmdlet for at implementere sin egen fjernbetjening, Remoting Det fungerer til ethvert script eller enhver rolle som er tilgængelig på destinationen.
Som standard leveres nyere Windows-servere med fjernbetjening aktiveret; i Windows 10/11 du aktiverer den med en enkelt cmdlet. Og ja, du kan bruge alternative legitimationsoplysninger, vedvarende sessioner, brugerdefinerede slutpunkter og mere.
Bemærk: Fjernbetjening er ikke synonymt med at åbne alt. Som standard, kun administratorer De kan oprette forbindelse, og handlinger udføres under deres identitet. Hvis du har brug for detaljeret delegering, giver brugerdefinerede slutpunkter dig mulighed for kun at eksponere de essentielle kommandoer.

Sådan fungerer det indeni: WinRM, WS-Man og porte
PowerShell Remoting fungerer i en klient-server-model. Klienten sender WS-Management-anmodninger via HTTP (5985/TCP) eller HTTPS (5986/TCP)På målet lytter Windows Remote Management (WinRM)-tjenesten, fortolker slutpunktet (sessionskonfiguration) og er vært for PowerShell-sessionen i baggrunden (wsmprovhost.exe-processen). returnerer serialiserede resultater til klienten i XML via SOAP.
Første gang du aktiverer Remoting, konfigureres lyttere, den relevante firewall-undtagelse åbnes, og sessionskonfigurationer oprettes. Fra PowerShell 6+ kan flere udgaver sameksistere, og Aktivér PSRemoting Registrerer slutpunkter med navne, der afspejler versionen (f.eks. PowerShell.7 og PowerShell.7.xy).
Hvis du kun tillader HTTPS i dit miljø, kan du oprette en sikker lytter med et certifikat udstedt af en betroet CA (anbefales). Alternativt er et andet alternativ at bruge TrustedHosts på en begrænset, risikobevidst måde til arbejdsgruppescenarier eller computere uden for domænet.
Bemærk at Powershell Remoting kan sameksistere med cmdlets med -ComputerName, men Microsoft fremmer WS-Man som den standard- og fremtidssikrede metode til fjernadministration.
Aktivering af PowerShell Remoting og nyttige parametre
I Windows skal du blot åbne PowerShell som administrator og køre Aktivér PSRemotingSystemet starter WinRM, konfigurerer automatisk start, aktiverer lytteren og opretter de relevante firewallregler. På klienter med en offentlig netværksprofil kan du bevidst tillade dette med -SpringNetværksprofiltjek over (og derefter forstærke med specifikke regler):
Enable-PSRemoting
Enable-PSRemoting -Force
Enable-PSRemoting -SkipNetworkProfileCheck -Force
Syntaksen tillader også, -Bekræfte y -Hvad hvis til ændringskontrol. Husk: Den er kun tilgængelig på Windows, og du skal køre den forhøjede konsol. De oprettede regler varierer mellem Server- og Client-udgaver, især på offentlige netværk, hvor de som standard er begrænset til det lokale undernet, medmindre du udvider omfanget (f.eks. med Set-NetFirewallRule).
For at liste allerede optagede sessionskonfigurationer og bekræfte, at alt er klar, skal du bruge Get-PSSessionConfigurationHvis PowerShell.x- og Workflow-slutpunkterne vises, er Remoting-frameworket operationelt.

Brugstilstande: 1 til 1, 1 til mange og vedvarende sessioner
Når du har brug for en interaktiv konsol på en enkelt computer, skal du henvende dig til Indtast-PSSessionPrompten vises, og alt, hvad du udfører, går til den eksterne vært. Du kan genbruge legitimationsoplysninger med Get-Credential for at undgå konstant at skulle indtaste dem igen og igen:
$cred = Get-Credential
Enter-PSSession -ComputerName dc01 -Credential $cred
Exit-PSSession
Hvis det, du leder efter, er at sende kommandoer til flere computere på én gang, er værktøjet det Invoke-Command med en scriptblok. Som standard starter den op til 32 samtidige forbindelser (kan justeres med -ThrottleLimit). Resultaterne returneres som deserialiserede objekter (uden "live" metoder):
Invoke-Command -ComputerName dc01,sql02,web01 -ScriptBlock { Get-Service -Name W32Time } -Credential $cred
Har du brug for at kalde en metode som .Stop() eller .Start()? Gør det. inde i scriptblokken i den eksterne kontekst, ikke det lokale deserialiserede objekt, og det er det. Hvis der er en tilsvarende cmdlet (Stop-Service/Start-Service), er det normalt at foretrække at bruge den for klarhedens skyld.
For at undgå omkostningerne ved at starte og afslutte sessioner på hvert opkald, skal du oprette en Vedvarende PSSession og genbrug den på tværs af flere kald. Brug New-PSSession til at oprette forbindelsen, og brug Invoke-Command-Session til at genbruge tunnelen. Glem ikke at lukke den med Remove-PSSession, når du er færdig.
Serialisering, begrænsninger og god praksis
En vigtig detalje: når man rejser, "+flader" genstande sig ud og ankommer som deserialiserede snapshots, med egenskaber men ingen metoder. Dette er bevidst og sparer båndbredde, men det betyder, at du ikke kan bruge medlemmer, der udfører logik (som .Kill()) på den lokale kopi. Løsningen er indlysende: kald disse metoder. eksternt og hvis du kun har brug for bestemte felter, kan du filtrere med Select-Object for at sende færre data.
I scripts skal du undgå Enter-PSSession (beregnet til interaktiv brug) og bruge Invoke-Command med scriptblokke. Hvis du forventer flere kald eller har brug for at bevare tilstand (variabler, importerede moduler), brug vedvarende sessioner og, hvis det er relevant, afbryd/genopret forbindelsen med Disconnect-PSSession/Connect-PSSession i PowerShell 3.0+.
Godkendelse, HTTPS og scenarier uden for domænet
I et domæne er native autentificering Kerberos Og alt glider. Når enheden ikke kan bekræfte servernavnet, eller du opretter forbindelse til en CNAME IP eller et alias, skal du bruge en af disse to muligheder: 1) Lytter HTTPS med certifikat udstedt af en CA, du har tillid til, eller 2) tilføj destinationen (navn eller IP) til TrustedHosts og brug loginoplysningerDen anden mulighed deaktiverer gensidig godkendelse for den pågældende vært, så den reducerer omfanget til det nødvendige minimum.
Opsætning af en HTTPS-lytter kræver et certifikat (ideelt set fra din PKI eller en offentlig CA), der er installeret i teamlageret og bundet til WinRM. Port 5986/TCP åbnes derefter i firewallen og bruges fra klienten. - Brug SSL i eksterne cmdlets. For klientcertifikatgodkendelse kan du knytte et certifikat til en lokal konto og oprette forbindelse til -CertifikatTommelfingeraftryk (Enter-PSSession accepterer ikke dette direkte; opret først sessionen med New-PSSession.)
Det andet hop og delegering af legitimationsoplysninger
Det berømte "dobbelthop" opstår, når du, efter at have oprettet forbindelse til en server, har brug for, at serveren får adgang til en tredje ressource på dine vegne (f.eks. en SMB-deling). Der er to tilgange til at tillade dette: CredSSP og ressourcebaseret begrænset Kerberos-delegering.
med CredSSP Du giver klienten og mellemmanden mulighed for eksplicit at delegere legitimationsoplysninger, og du angiver en politik (GPO), der tillader delegering til bestemte computere. Det er hurtigt at konfigurere, men mindre sikkert, fordi legitimationsoplysningerne overføres i klartekst inden for den krypterede tunnel. Begræns altid kilder og destinationer.
Det foretrukne alternativ inden for domænet er begrænset Kerberos-delegering (ressourcebaseret begrænset delegering) i moderne AD. Dette gør det muligt for endpointen at modtage delegering fra middlepoint for specifikke tjenester, hvilket undgår at afsløre din identitet ved den indledende forbindelse. Kræver nyere domænecontrollere og en opdateret RSAT.
Brugerdefinerede slutpunkter (sessionskonfigurationer)
En af perlerne ved Remoting er muligheden for at registrere forbindelsespunkter med skræddersyede muligheder og begrænsningerFørst genererer du en fil med New-PSSessionConfigurationFile (moduler til forudindlæsning, synlige funktioner, aliasser, ExecutionPolicy, LanguageMode osv.), og derefter registrerer du den med Register-PSSessionConfiguration, hvor du kan indstille Kør som legitimationsoplysninger og tilladelser (SDDL eller GUI-grænseflade med -ShowSecurityDescriptorUI).
For sikker delegering skal du kun eksponere det nødvendige med -VisibleCmdlets/-VisibleFunctions og deaktivere fri scripting, hvis det er relevant med SprogtilstandBegrænset sprog eller NoLanguage. Hvis du forlader FullLanguage, kan nogen bruge en scriptblok til at aktivere ikke-eksponerede kommandoer, som i kombination med RunAs, det ville være et hulDesign disse endepunkter med en fin kam og dokumenter deres omfang.
Domæner, GPO'er og Groupware
I AD kan du implementere Powershell Remoting i stor skala med GPO: tillad automatisk konfiguration af WinRM-lyttere, indstil tjenesten til Automatisk, og opret firewall-undtagelsen. Husk at GPO'er ændrer indstillinger, men de aktiverer ikke altid tjenesten med det samme; nogle gange skal du genstarte eller gennemtvinge en gpupdate.
I arbejdsgrupper (ikke-domæne), konfigurer Remoting med Aktivér PSRemoting, sæt TrustedHosts på klienten (winrm set winrm/config/client @{TrustedHosts=»host1,host2″}) og brug lokale legitimationsoplysninger. For HTTPS kan du montere selvsignerede certifikater, selvom det anbefales at bruge en betroet CA og validér navnet som du vil bruge i -ComputerName i certifikatet (CN/SAN-match).
Nøgle-cmdlets og syntaks
En håndfuld kommandosoldater dækker 90% af de daglige scenarierSådan aktiverer/deaktiverer du:
Enable-PSRemoting
Disable-PSRemoting
Interaktiv session 1 til 1 og udgang:
Enter-PSSession -ComputerName SEC504STUDENT
Exit-PSSession
1 til mange, med parallelisme og legitimationsoplysninger:
Invoke-Command -ComputerName dc01,sql02,web01 -ScriptBlock { Get-Service W32Time } -Credential $cred
Vedvarende sessioner og genbrug:
$s = New-PSSession -ComputerName localhost -ConfigurationName PowerShell.7
Invoke-Command -Session $s -ScriptBlock { $PSVersionTable }
Remove-PSSession $s
Test og WinRM nyttig:
Test-WSMan -ComputerName host
winrm get winrm/config
winrm enumerate winrm/config/listener
winrm quickconfig -transport:https
Praktiske noter om firewall, netværk og porte
Åbn 5985/TCP for HTTP og 5986/TCP for HTTPS på destinationscomputeren og på enhver mellemliggende firewallPå Windows-klienter opretter Enable-PSRemoting regler for domæne- og private profiler. For offentlige profiler er det begrænset til det lokale undernet, medmindre du ændrer omfanget med Set-NetFirewallRule -RemoteAddress Any (en værdi, du kan vurdere baseret på din risiko).
Hvis du bruger SOAR/SIEM-integrationer, der kører fjernkommandoer (f.eks. fra XSOAR), skal du sørge for, at serveren har DNS-opløsning til værterne, forbindelse til 5985/5986 og legitimationsoplysninger med tilstrækkelige lokale tilladelser. I nogle tilfælde kan NTLM/Basic-godkendelse kræve justering (f.eks. brug af en lokal bruger i Basic med SSL).
Aktivér-PSRemoting-parametre (driftsoversigt)
-Bekræft beder om bekræftelse før udførelse; -Tving ignorerer advarslerne og foretag de nødvendige ændringer; -SkipNetworkProfileCheck aktiverer fjernbetjening på offentlige klientnetværk (som standard begrænset til det lokale undernet); -WhatIf viser dig, hvad der ville ske uden at anvende ændringer. Derudover understøtter den, ligesom enhver standard cmdlet, fælles parametre (-Udførlig, -Fejlhandling osv.).
Husk at "Aktivér" ikke opretter HTTPS-lyttere eller -certifikater for dig. Hvis du har brug for end-to-end-kryptering fra starten og godkendelse baseret på certificeret, konfigurer HTTPS-lytteren og valider CN/SAN mod det navn, du vil bruge i -ComputerName.
Nyttige WinRM- og PowerShell-fjernstyringskommandoer
nogle essentielle sengetøj for dag til 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
Når du administrerer Windows i stor skala, giver Remoting dig mulighed for at gå fra "computer-til-computer" til en deklarativ og sikker tilgang. Ved at kombinere vedvarende sessioner, stærk godkendelse (Kerberos/HTTPS), begrænsede slutpunkter og tydelige spor til diagnosticering, du får fart og kontrol uden at gå på kompromis med sikkerhed eller revision. Hvis du også standardiserer GPO-aktivering og mestrer særlige tilfælde (TrustedHosts, double hop, certifikater), vil du have en solid fjernplatform til daglig drift og hændelsesrespons.
Redaktør med speciale i teknologi og internetspørgsmål med mere end ti års erfaring i forskellige digitale medier. Jeg har arbejdet som redaktør og indholdsskaber for e-handel, kommunikation, online marketing og annoncevirksomheder. Jeg har også skrevet på økonomi, finans og andre sektorers hjemmesider. Mit arbejde er også min passion. Nu gennem mine artikler i Tecnobits, Jeg forsøger at udforske alle de nyheder og nye muligheder, som teknologiens verden tilbyder os hver dag for at forbedre vores liv.