- Vzdialená komunikácia používa WinRM/WS-Man (HTTP/HTTPS) a umožňuje relácie typu 1-k-1, 1-k-mnoho a trvalé relácie s bezpečnostnými kontrolami.
- Parameter Enable-PSRemoting konfiguruje službu, poslucháče a firewall; HTTPS vyžaduje platný certifikát a zhodu CN/SAN.
- Výsledky sa vracajú deserializované; metódy sa volajú v rámci vzdialeného skriptového bloku a na jemnozrnné delegovanie sa používajú vlastné koncové body.
Možno už lokálne automatizujete veľa úloh pomocou PowerShellu, ale kde to vlastne robíte? Vzdialená komunikácia v PowerShelle robí rozdiel Ide o spúšťanie príkazov na vzdialených počítačoch, či už na niekoľkých alebo stovkách, interaktívne alebo paralelne. Táto technológia, dostupná od verzie Windows PowerShell 2.0 a vylepšená od verzie 3.0, je založená na WS-Management (WinRM) a prevádza PowerShell v robustnom, škálovateľnom a bezpečnom kanáli vzdialenej správy.
V prvom rade je dôležité pochopiť dve kľúčové myšlienky: cmdlety s -Parameter NázovPočítača (napr. Get-Process alebo Get-Service) nie sú dlhodobou cestou odporúčanou spoločnosťou Microsoft a PowerShell Remoting nefunguje ako „trik“. V skutočnosti, vynucuje vzájomné overovanie, zaznamenáva protokoly auditu a rešpektuje vaše bežné povolenia bez ukladania prihlasovacích údajov alebo magického spúšťania čohokoľvek s super oprávneniami.
Čo je PowerShell Remoting a prečo ho používať?
s PowerShell Remoting môžete vykonať takmer akýkoľvek príkaz na diaľku ktoré by ste mohli spustiť v lokálnej relácii, od dotazovania služieb až po nasadzovanie konfigurácií, a to na stovkách počítačov naraz. Na rozdiel od cmdletov, ktoré akceptujú -ComputerName (mnohé používajú DCOM/RPC), vzdialená komunikácia cestuje cez WS-Man (HTTP/HTTPS), ktorý je viac prispôsobený bráne firewall, umožňuje paralelizmus a presúva prácu na vzdialený hostiteľ, nie na klienta.
To sa premieta do troch praktických výhod: lepší výkon pri hromadných popravách, menšie trenie v sieťach s obmedzujúcimi pravidlami a bezpečnostným modelom konzistentným s Kerberos/HTTPS. Okrem toho, keďže sa nespolieha na každý cmdlet pri implementácii vlastného vzdialeného pripojenia, vzdialená komunikácia Funguje to pre akýkoľvek skript alebo rolu ktorý je k dispozícii v mieste určenia.
V predvolenom nastavení majú najnovšie servery Windows povolenú funkciu Vzdialená komunikácia; vo Windowse 10/11 aktivuješ ho s jednou rutinou cmdlet. A áno, môžete použiť alternatívne prihlasovacie údaje, trvalé relácie, vlastné koncové body a ďalšie.
Poznámka: Vzdialená komunikácia nie je synonymom pre otváranie všetkého. Štandardne iba správcovia Môžu sa pripojiť a akcie sa vykonávajú pod ich identitou. Ak potrebujete detailné delegovanie, vlastné koncové body vám umožňujú sprístupniť iba základné príkazy.

Ako to funguje vo vnútri: WinRM, WS-Man a porty
PowerShell Remoting funguje v modeli klient-server. Klient odosiela požiadavky WS-Management prostredníctvom HTTP (5985/TCP) alebo HTTPS (5986/TCP)Na cieli služba Windows Remote Management (WinRM) počúva, rozpoznáva koncový bod (konfiguráciu relácie) a hosťuje reláciu PowerShell na pozadí (proces wsmprovhost.exe). vrátenie serializovaných výsledkov klientovi v XML cez SOAP.
Pri prvom povolení vzdialenej komunikácie sa nakonfigurujú poslucháče, otvorí sa príslušná výnimka brány firewall a vytvoria sa konfigurácie relácií. Od verzie PowerShell 6+ existuje viacero edícií súčasne a Enable-PSRemoting Registruje koncové body s názvami, ktoré odrážajú verziu (napríklad PowerShell.7 a PowerShell.7.xy).
Ak vo svojom prostredí povoľujete iba HTTPS, môžete vytvoriť bezpečný poslucháč s certifikátom vydaným dôveryhodnou certifikačnou autoritou (odporúčané). Ďalšou alternatívou je použiť TrustedHosts obmedzeným spôsobom s ohľadom na riziká pre scenáre pracovných skupín alebo počítače mimo domény.
Upozorňujeme, že Powershell Remoting môže koexistovať s cmdletmi s -ComputerName, ale Microsoft tlačí na WS-Mana ako štandardný a do budúcnosti pripravený spôsob vzdialenej správy.
Povolenie vzdialenej komunikácie PowerShell a užitočné parametre
V systéme Windows stačí otvoriť PowerShell ako správca a spustiť Enable-PSRemotingSystém spustí WinRM, nakonfiguruje automatické spustenie, povolí listener a vytvorí príslušné pravidlá brány firewall. Na klientoch s verejným sieťovým profilom môžete toto zámerne povoliť pomocou -PreskočiťKontroluProfiluSieťe (a potom posilniť špecifickými pravidlami):
Enable-PSRemoting
Enable-PSRemoting -Force
Enable-PSRemoting -SkipNetworkProfileCheck -Force
Syntax tiež umožňuje, -Potvrdiť y -Čo ak pre kontrolu zmien. Pamätajte: Je k dispozícii iba v systéme Windowsa musíte spustiť konzolu s oprávneniami správcu. Vytvorené pravidlá sa líšia medzi edíciami Server a Client, najmä vo verejných sieťach, kde sú štandardne obmedzené na lokálnu podsieť, pokiaľ nerozšírite rozsah (napríklad pomocou Set-NetFirewallRule).
Ak chcete zobraziť už nahrané konfigurácie relácie a potvrdiť, že je všetko pripravené, použite Get-PSSessionConfigurationAk sa zobrazia koncové body PowerShell.x a Workflow, framework Remoting je funkčný.

Režimy použitia: 1 k 1, 1 k mnohým a trvalé relácie
Ak potrebujete interaktívnu konzolu na jednom počítači, obráťte sa na Enter-PSSessionZobrazí sa výzva a všetko, čo vykonáte, sa odošle na vzdialený hostiteľ. Prihlasovacie údaje môžete znova použiť pomocou príkazu Get-Credential, aby ste sa vyhli ich neustálemu opätovnému zadávaniu:
$cred = Get-Credential
Enter-PSSession -ComputerName dc01 -Credential $cred
Exit-PSSession
Ak hľadáte možnosť odosielať príkazy do viacerých počítačov naraz, tento nástroj je Vyvolať-Command so skriptovým blokom. Predvolene spúšťa až 32 súbežných pripojení (nastaviteľné pomocou -ThrottleLimit). Výsledky sa vracajú ako deserializovaných objektov (bez „živých“ metód):
Invoke-Command -ComputerName dc01,sql02,web01 -ScriptBlock { Get-Service -Name W32Time } -Credential $cred
Potrebujete zavolať metódu ako .Stop() alebo .Start()? Urobte to. vo vnútri skriptového bloku vo vzdialenom kontexte, nie lokálne deserializovaný objekt, a to je všetko. Ak existuje ekvivalentný cmdlet (Stop-Service/Start-Service), zvyčajne je pre prehľadnosť vhodnejšie použiť ho.
Aby ste sa vyhli nákladom na začatie a ukončenie relácií pri každom hovore, vytvorte Trvalá relácia PSS a znova ho použite pri viacerých volaniach. Na vytvorenie pripojenia použite New-PSSession a na opätovné použitie tunela použite Invoke-Command-Session. Nezabudnite ho po dokončení zatvoriť pomocou Remove-PSSession.
Serializácia, limity a osvedčené postupy
Dôležitý detail: pri cestovaní sa objekty „+sploštia“ a prichádzajú ako deserializovaných snímok, s vlastnosťami, ale bez metód. Toto je zámerné a šetrí to šírku pásma, ale znamená to, že nemôžete použiť členy, ktoré vykonávajú logiku (ako .Kill()) na lokálnej kópii. Riešenie je zrejmé: vyvolať tieto metódy. na diaľku a ak potrebujete iba určité polia, filtrujte pomocou Select-Object, aby ste odoslali menej údajov.
V skriptoch sa vyhnite Enter-PSSession (určenému na interaktívne použitie) a v blokoch skriptov použite Invoke-Command. Ak očakávate viacero volaní alebo potrebujete zachovať stav (premenné, importované moduly), používať trvalé relácie a ak je to relevantné, odpojte/znova pripojte ich pomocou príkazu Disconnect-PSSession/Connect-PSSession v PowerShell 3.0+.
Autentifikácia, HTTPS a scenáre mimo domény
V doméne je natívna autentifikácia Kerberos A všetko funguje. Keď zariadenie nedokáže overiť názov servera alebo sa pripájate k IP adrese alebo aliasu CNAME, potrebujete jednu z týchto dvoch možností: 1) Listener HTTPS s certifikátom vydané certifikačnou autoritou, ktorej dôverujete, alebo 2) pridajte cieľ (názov alebo IP adresu) do TrustedHosts a použiť povereniaDruhá možnosť zakáže vzájomné overovanie pre daného hostiteľa, čím sa rozsah zníži na nevyhnutné minimum.
Nastavenie HTTPS listenera vyžaduje certifikát (ideálne z vašej PKI alebo verejnej certifikačnej autority), nainštalovaný v tímovom úložisku a prepojený s WinRM. Port 5986/TCP sa potom otvorí v bráne firewall a z klienta sa použije. -PoužiteSSL vo vzdialených cmdletoch. Pre overenie klientskeho certifikátu môžete namapovať certifikát na lokálny účet a pripojiť sa k nemu -Odtlačok palca certifikátu (Enter-PSSession to priamo neakceptuje; najprv vytvorte reláciu pomocou New-PSSession.)
Druhý krok a delegovanie poverení
Známy „dvojitý skok“ sa objaví, keď po pripojení k serveru potrebujete, aby tento server mal prístup k tretí zdroj vo vašom mene (napr. zdieľanie SMB). Existujú dva prístupy k povoleniu tohto: CredSSP a delegovanie Kerberos s obmedzeným prístupom na základe zdrojov.
s CredSSP Klientovi a sprostredkovateľovi povolíte explicitné delegovanie poverení a nastavíte politiku (GPO), ktorá umožní delegovanie na konkrétne počítače. Konfigurácia je rýchla, ale menej bezpečná, pretože poverenia sa prenášajú v otvorenom texte v rámci šifrovaného tunela. Vždy obmedzte zdroje a ciele.
Preferovanou alternatívou v doméne je obmedzená delegácia Kerberos (obmedzené delegovanie na základe zdrojov) v modernej službe Active Directory. To umožňuje koncovému bodu spoliehať sa na prijatie delegovania od stredového bodu pre konkrétne služby, čím sa zabráni odhaleniu vašej identity pri počiatočnom pripojení. Vyžaduje si najnovšie radiče domény a aktualizovaný RSAT.
Vlastné koncové body (konfigurácie relácií)
Jedným z klenotov vzdialenej komunikácie je možnosť registrovať body pripojenia s prispôsobené možnosti a limityNajprv vygenerujete súbor pomocou New-PSSessionConfigurationFile (moduly na predbežné načítanie, viditeľné funkcie, aliasy, ExecutionPolicy, LanguageMode atď.) a potom ho zaregistrujete pomocou Register-PSSessionConfiguration, kde môžete nastaviť Spustiť ako poverenie a oprávnenia (rozhranie SDDL alebo GUI s -ShowSecurityDescriptorUI).
Pre bezpečné delegovanie sprístupnite iba to, čo je potrebné, pomocou -VisibleCmdlets/-VisibleFunctions a v prípade potreby vypnite voľné skriptovanie pomocou Jazykový režim Obmedzený jazyk alebo NoLanguage. Ak opustíte FullLanguage, niekto by mohol použiť blok skriptu na vyvolanie neexponovaných príkazov, ktoré v kombinácii s RunAs, bola by to dieraTieto koncové body navrhnite dôkladne a zdokumentujte ich rozsah.
Domény, GPO a groupware
V službe AD môžete nasadiť Powershell Remoting vo veľkom meradle pomocou GPO: povoliť automatickú konfiguráciu poslucháčov WinRM, nastavte službu na automatickúa vytvorte výnimku brány firewall. Pamätajte, že objekty GPO menia nastavenia, ale nie vždy službu okamžite zapnú; niekedy je potrebné reštartovať alebo vynútiť aktualizáciu gp.
V pracovných skupinách (mimo domény) nakonfigurujte vzdialenú komunikáciu pomocou Enable-PSRemoting, nastavte TrustedHosts na klientovi (winrm set winrm/config/client @{TrustedHosts=»host1,host2″}) a použite lokálne prihlasovacie údaje. Pre HTTPS môžete pripojiť certifikáty s vlastným podpisom, hoci sa odporúča použiť dôveryhodnú certifikačnú autoritu a overiť meno ktorý použijete v -ComputerName v certifikáte (zhoda CN/SAN).
Kľúčové cmdlety a syntax
Hŕstka komand kryje 90 % denných scenárovAktivácia/deaktivácia:
Enable-PSRemoting
Disable-PSRemoting
Interaktívna relácia 1 na 1 a východ:
Enter-PSSession -ComputerName SEC504STUDENT
Exit-PSSession
1 ku mnohým, s paralelizmom a povereniami:
Invoke-Command -ComputerName dc01,sql02,web01 -ScriptBlock { Get-Service W32Time } -Credential $cred
Trvalé relácie a opätovné použitie:
$s = New-PSSession -ComputerName localhost -ConfigurationName PowerShell.7
Invoke-Command -Session $s -ScriptBlock { $PSVersionTable }
Remove-PSSession $s
Testovanie a WinRM Užitočné:
Test-WSMan -ComputerName host
winrm get winrm/config
winrm enumerate winrm/config/listener
winrm quickconfig -transport:https
Praktické poznámky k firewallu, sieti a portom
Otvorte 5985/TCP pre HTTP a 5986/TCP pre HTTPS na cieľovom počítači a na akýkoľvek prechodný firewallNa klientoch so systémom Windows vytvára Enable-PSRemoting pravidlá pre doménové a súkromné profily; pre verejné profily je obmedzený na lokálnu podsieť, pokiaľ nezmeníte rozsah pomocou Set-NetFirewallRule -RemoteAddress Any (hodnota, ktorú môžete posúdiť na základe vášho rizika).
Ak používate integrácie SOAR/SIEM, ktoré spúšťajú vzdialené príkazy (napr. z XSOAR), uistite sa, že server má Preklad DNS k hostiteľom, pripojenie k 5985/5986 a poverenia s dostatočnými lokálnymi povoleniami. V niektorých prípadoch môže byť potrebné upraviť overovanie NTLM/Basic (napr. použitie lokálneho používateľa v Basic s SSL).
Parametre Enable-PSRemoting (prevádzkové zhrnutie)
-Potvrdiť vyžiada potvrdenie pred vykonaním; -Vynútiť ignoruje varovania a vykonajte potrebné zmeny; -SkipNetworkProfileCheck umožňuje vzdialenú komunikáciu vo verejných klientskych sieťach (predvolene obmedzené na lokálnu podsieť); -WhatIf vám ukáže, čo by sa stalo bez použitia zmien. Okrem toho, rovnako ako každý štandardný cmdlet, podporuje spoločné parametre (-Verbose, -ErrorAction atď.).
Pamätajte, že možnosť „Povoliť“ nevytvára HTTPS listenery ani certifikáty; ak potrebujete end-to-end šifrovanie od začiatku a autentifikáciu na základe certifikované, nakonfigurujte HTTPS listener a overte CN/SAN oproti názvu, ktorý použijete v -ComputerName.
Užitočné príkazy pre vzdialenú komunikáciu v prostredí WinRM a PowerShell
niektorí základné veci na nočnú posteľ zo dňa na deň:
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
Pri spravovaní systému Windows vo veľkom rozsahu vám vzdialená komunikácia umožňuje prejsť z prístupu „medzi počítačmi“ na deklaratívny a bezpečný prístup. Kombináciou trvalých relácií, silného overovania (Kerberos/HTTPS), obmedzených koncových bodov a jasných sledovaní pre diagnostiku, získaš rýchlosť a kontrolu bez obetovania bezpečnosti alebo auditu. Ak štandardizujete aj aktiváciu GPO a zvládnete špeciálne prípady (TrustedHosts, double hop, certifikáty), budete mať solídnu vzdialenú platformu pre každodennú prevádzku a reakciu na incidenty.
Redaktor špecializovaný na problematiku technológií a internetu s viac ako desaťročnými skúsenosťami v rôznych digitálnych médiách. Pracoval som ako redaktor a tvorca obsahu pre e-commerce, komunikáciu, online marketing a reklamné spoločnosti. Písal som aj na ekonomické, finančné a iné sektorové weby. Moja práca je zároveň mojou vášňou. Teraz prostredníctvom mojich článkov v Tecnobits, snažím sa každý deň preskúmať všetky novinky a nové možnosti, ktoré nám svet technológií ponúka na zlepšenie nášho života.