- Vzdálená komunikace využívá WinRM/WS-Man (HTTP/HTTPS) a umožňuje relace typu 1:1, 1:n a trvalé relace s bezpečnostními kontrolami.
- Parametr Enable-PSRemoting konfiguruje službu, posluchače a firewall; HTTPS vyžaduje platný certifikát a shodu CN/SAN.
- Výsledky jsou vráceny deserializované; metody jsou volány ve vzdáleném skriptovém bloku a pro jemně odstupňované delegování jsou použity vlastní koncové body.
Možná už s PowerShellem lokálně automatizujete mnoho úloh, ale kde je doopravdy automatizujete? Vzdálená komunikace PowerShellu dělá rozdíl Jde o situaci, kdy spouštíte příkazy na vzdálených počítačích, ať už na několika nebo na stovkách, interaktivně nebo paralelně. Tato technologie, dostupná od verze Windows PowerShell 2.0 a vylepšená od verze 3.0, je založena na WS-Management (WinRM) a převádí PowerShell v robustním, škálovatelném a bezpečném kanálu pro vzdálenou správu.
V první řadě je důležité pochopit dvě klíčové myšlenky: cmdlety s -Parametr Název_počítače (např. Get-Process nebo Get-Service) nejsou dlouhodobou cestou doporučenou společností Microsoft a PowerShell Remoting nefunguje jako „trick“. Ve skutečnosti, vynucuje vzájemné ověřování, audituje protokoly a respektuje vaše obvyklá oprávnění, bez ukládání přihlašovacích údajů nebo magického spouštění čehokoli s super oprávněními.
Co je PowerShell Remoting a proč ho používat?
s PowerShell Remoting puedes provést téměř jakýkoli příkaz na dálku které byste mohli spustit v lokální relaci, od dotazování služeb až po nasazení konfigurací, a to na stovkách počítačů najednou. Na rozdíl od cmdletů, které akceptují -ComputerName (mnohé používají DCOM/RPC), vzdálená komunikace cestuje přes WS-Man (HTTP/HTTPS), který je více přátelský k firewallům, umožňuje paralelismus a přesouvá práci na vzdálený hostitel, nikoli na klienta.
To se promítá do tří praktických výhod: lepší výkon při hromadných popravách, menší tření v sítích s omezujícími pravidly a bezpečnostním modelem konzistentním s Kerberos/HTTPS. Navíc tím, že se nespoléhá na každou rutinu pro implementaci vlastního vzdáleného přístupu, Vzdálená komunikace Funguje to pro jakýkoli skript nebo roli který je k dispozici v cílové destinaci.
Ve výchozím nastavení mají novější servery Windows povolenou funkci Vzdálená komunikace; ve Windows 10/11 aktivuješ to s jedinou rutinou. A ano, můžete použít alternativní přihlašovací údaje, trvalé relace, vlastní koncové body a další.
Poznámka: Vzdálená komunikace není synonymem pro otevírání všeho. Ve výchozím nastavení pouze správci Mohou se připojit a akce se provádějí pod jejich identitou. Pokud potřebujete detailní delegování, vlastní koncové body vám umožní zpřístupnit pouze nezbytné příkazy.

Jak to funguje uvnitř: WinRM, WS-Man a porty
Vzdálená komunikace PowerShellu funguje v modelu klient-server. Klient odesílá požadavky WS-Management prostřednictvím HTTP (5985/TCP) nebo HTTPS (5986/TCP)V cíli naslouchá služba Windows Remote Management (WinRM), rozpoznává koncový bod (konfiguraci relace) a hostuje relaci PowerShellu na pozadí (proces wsmprovhost.exe). vrácení serializovaných výsledků klientovi v XML přes SOAP.
Při prvním povolení vzdálené komunikace se nakonfigurují posluchače, otevře se příslušná výjimka brány firewall a vytvoří se konfigurace relací. Od verze PowerShell 6+ existuje více edic současně a Povolit PSRemoting Registruje koncové body s názvy, které odrážejí verzi (například PowerShell.7 a PowerShell.7.xy).
Pokud ve svém prostředí povolujete pouze HTTPS, můžete vytvořit bezpečný posluchač s certifikátem vydaným důvěryhodnou certifikační autoritou (doporučeno). Další možností je použití TrustedHosts v omezeném rozsahu s ohledem na rizika pro scénáře pracovních skupin nebo počítače mimo doménu.
Všimněte si, že Powershell Remoting může koexistovat s cmdlety s -ComputerName, ale Microsoft tlačí na WS-Mana jako standardní a pro budoucnost připravený způsob vzdálené správy.
Povolení vzdálené komunikace PowerShellu a užitečné parametry
Ve Windows stačí otevřít PowerShell jako správce a spustit Povolit PSRemotingSystém spustí WinRM, nakonfiguruje automatické spuštění, povolí listener a vytvoří příslušná pravidla firewallu. Na klientech s profilem veřejné sítě můžete toto záměrně povolit pomocí -PřeskočitKontroluProfiluSítě (a poté podpořit konkrétními pravidly):
Enable-PSRemoting
Enable-PSRemoting -Force
Enable-PSRemoting -SkipNetworkProfileCheck -Force
Syntaxe také umožňuje, -Potvrdit y -Co když pro řízení změn. Nezapomeňte: Je k dispozici pouze ve Windowsa musíte spustit konzoli se zvýšenými oprávněními. Vytvořená pravidla se liší mezi edicemi Server a Client, zejména ve veřejných sítích, kde jsou ve výchozím nastavení omezena na místní podsíť, pokud nerozšiříte jejich rozsah (například pomocí Set-NetFirewallRule).
Chcete-li zobrazit seznam již nahraných konfigurací relací a potvrdit, že je vše připraveno, použijte Get-PSSessionConfigurationPokud se zobrazí koncové body PowerShell.x a Workflow, je rozhraní Remoting framework funkční.

Režimy použití: 1:1, 1:n a trvalé relace
Pokud potřebujete interaktivní konzoli na jednom počítači, obraťte se na Enter-PSSessionZobrazí se výzva a vše, co provedete, bude odesláno na vzdálený hostitel. Přihlašovací údaje můžete znovu použít pomocí příkazu Get-Credential, abyste se vyhnuli jejich neustálému opětovnému zadávání:
$cred = Get-Credential
Enter-PSSession -ComputerName dc01 -Credential $cred
Exit-PSSession
Pokud hledáte možnost odesílat příkazy do několika počítačů najednou, je to nástroj Invoke-Command s blokem skriptu. Ve výchozím nastavení spouští až 32 souběžných připojení (nastavitelné pomocí -ThrottleLimit). Výsledky jsou vráceny jako deserializovaných objektů (bez „živých“ metod):
Invoke-Command -ComputerName dc01,sql02,web01 -ScriptBlock { Get-Service -Name W32Time } -Credential $cred
Potřebujete volat metodu jako .Stop() nebo .Start()? Udělejte to. uvnitř skriptového bloku ve vzdáleném kontextu, nikoli v lokálním deserializovaném objektu, a to je vše. Pokud existuje ekvivalentní cmdlet (Stop-Service/Start-Service), je obvykle pro přehlednost vhodnější jej použít.
Abyste se vyhnuli nákladům na zahajování a ukončování relací u každého hovoru, vytvořte Trvalá relace PSS a znovu jej použijte při více voláních. Pro vytvoření připojení použijte New-PSSession a pro opětovné použití tunelu použijte Invoke-Command-Session. Nezapomeňte jej po dokončení zavřít pomocí Remove-PSSession.
Serializace, omezení a osvědčené postupy
Důležitý detail: při cestování se objekty „+zplošťují“ a dorazí jako deserializovaných snímků, s vlastnostmi, ale bez metod. Toto je záměrné a šetří to šířku pásma, ale znamená to, že nemůžete použít členy, které spouštějí logiku (jako .Kill()) na lokální kopii. Řešení je zřejmé: vyvolat tyto metody. na dálku a pokud potřebujete pouze určitá pole, filtrujte pomocí Select-Object, abyste odeslali méně dat.
Ve skriptech se vyhněte Enter-PSSession (určenému pro interaktivní použití) a používejte Invoke-Command se skriptovými bloky. Pokud očekáváte více volání nebo potřebujete zachovat stav (proměnné, importované moduly), používat trvalé relace a v případě potřeby je odpojte/znovu připojte pomocí Disconnect-PSSession/Connect-PSSession v PowerShellu 3.0+.
Ověřování, HTTPS a scénáře mimo doménu
V doméně je nativní ověřování Kerberos A všechno plynule funguje. Pokud zařízení nedokáže ověřit název serveru nebo se připojíte k IP adrese či aliasu s CNAME, potřebujete jednu z těchto dvou možností: 1) Listener HTTPS s certifikátem vydaný certifikační autoritou, které důvěřujete, nebo 2) přidejte cíl (název nebo IP adresu) do TrustedHosts a použít přihlašovací údajeDruhá možnost zakáže vzájemné ověřování pro daného hostitele, takže rozsah se sníží na nezbytné minimum.
Nastavení HTTPS listeneru vyžaduje certifikát (ideálně z vaší PKI nebo veřejné certifikační autority), nainstalovaný v týmovém úložišti a propojený s WinRM. Port 5986/TCP se poté otevře ve firewallu a z klienta se použije. -PoužijteSSL ve vzdálených rutinách. Pro ověřování klientského certifikátu můžete namapovat certifikát na místní účet a připojit se k němu. -Otisk palce certifikátu (Enter-PSSession to přímo neakceptuje; nejprve vytvořte relaci pomocí New-PSSession.)
Druhý skok a delegování pověřovacích listin
Slavný „dvojitý skok“ se objevuje, když po připojení k serveru potřebujete, aby tento server měl přístup k… třetí zdroj vaším jménem (např. sdílená složka SMB). Existují dva přístupy, jak to povolit: CredSSP a omezená delegace Kerberos založená na zdrojích.
s CredSSP Klientovi a zprostředkovateli povolíte explicitně delegovat přihlašovací údaje a nastavíte zásadu (GPO), která umožní delegování na konkrétní počítače. Konfigurace je rychlá, ale méně bezpečná, protože přihlašovací údaje se v šifrovaném tunelu přenášejí v otevřeném textu. Vždy omezte zdroje a cíle.
Preferovanou alternativou v doméně je omezená delegace Kerberos (omezená delegace na základě zdrojů) v moderní AD. To umožňuje koncovému bodu spoléhat se na delegaci od middlepointu pro konkrétní služby, čímž se zabrání odhalení vaší identity při počátečním připojení. Vyžaduje nejnovější řadiče domény a aktualizovaný RSAT.
Vlastní koncové body (konfigurace relací)
Jedním z klenotů vzdálené komunikace je možnost registrovat připojovací body u přizpůsobené schopnosti a limityNejprve vygenerujete soubor pomocí New-PSSessionConfigurationFile (moduly pro předběžné načítání, viditelné funkce, aliasy, ExecutionPolicy, LanguageMode atd.) a poté jej zaregistrujete pomocí Register-PSSessionConfiguration, kde můžete nastavit Spustit jako přihlašovací údaje a oprávnění (rozhraní SDDL nebo GUI s -ShowSecurityDescriptorUI).
Pro bezpečné delegování zpřístupněte pouze to, co je nezbytné, pomocí -VisibleCmdlets/-VisibleFunctions a v případě potřeby zakažte bezplatné skriptování pomocí Jazykový režimOmezený jazyk nebo NoLanguage. Pokud opustíte FullLanguage, někdo by mohl použít blok skriptu k vyvolání nezveřejněných příkazů, což v kombinaci s RunAs, byla by to díraNavrhněte tyto koncové body s jemným hřebenem a zdokumentujte jejich rozsah.
Domény, objekty GPO a groupware
V Active Directory můžete nasadit Powershell Remoting ve velkém měřítku pomocí GPO: povolit automatickou konfiguraci posluchačů WinRM, nastavit službu na Automatickya vytvořte výjimku firewallu. Nezapomeňte, že objekty GPO mění nastavení, ale ne vždy službu okamžitě zapnou; někdy je nutné restartovat nebo vynutit aktualizaci gpupdate.
V pracovních skupinách (mimo doménu) nakonfigurujte vzdálenou komunikaci pomocí Povolit PSRemoting, nastavte na klientovi TrustedHosts (winrm set winrm/config/client @{TrustedHosts=»host1,host2″}) a použijte lokální přihlašovací údaje. Pro HTTPS můžete připojit certifikáty s vlastním podpisem, i když se doporučuje použít důvěryhodnou certifikační autoritu a ověřit jméno který použijete v parametru -ComputerName v certifikátu (shoda CN/SAN).
Klíčové rutiny a syntaxe
Hrstka komand kryje 90 % denních scénářůAktivace/deaktivace:
Enable-PSRemoting
Disable-PSRemoting
Interaktivní relace 1:1 a východ:
Enter-PSSession -ComputerName SEC504STUDENT
Exit-PSSession
1 ku mnoha, s paralelismem a pověřovacími údaji:
Invoke-Command -ComputerName dc01,sql02,web01 -ScriptBlock { Get-Service W32Time } -Credential $cred
Trvalé relace a znovu použít:
$s = New-PSSession -ComputerName localhost -ConfigurationName PowerShell.7
Invoke-Command -Session $s -ScriptBlock { $PSVersionTable }
Remove-PSSession $s
Testování a WinRM užitečný:
Test-WSMan -ComputerName host
winrm get winrm/config
winrm enumerate winrm/config/listener
winrm quickconfig -transport:https
Praktické poznámky k firewallu, síti a portům
Otevřete 5985/TCP pro HTTP a 5986/TCP pro HTTPS na cílovém počítači a na jakýkoli přechodný firewallV klientech se systémem Windows vytváří Enable-PSRemoting pravidla pro doménové a soukromé profily; pro veřejné profily je omezeno na místní podsíť, pokud nezměníte rozsah pomocí Set-NetFirewallRule -RemoteAddress Any (hodnota, kterou můžete posoudit na základě vašeho rizika).
Pokud používáte integrace SOAR/SIEM, které spouštějí vzdálené příkazy (např. z XSOAR), ujistěte se, že server má Rozlišení DNS k hostitelům, připojení k 5985/5986 a přihlašovací údaje s dostatečnými lokálními oprávněními. V některých případech může být nutné upravit ověřování NTLM/Basic (např. použití lokálního uživatele v Basic s SSL).
Parametry Enable-PSRemoting (souhrn provozu)
-Potvrdit se před spuštěním zeptá na potvrzení; -Vynutit ignoruje varování a proveďte potřebné změny; -SkipNetworkProfileCheck povoluje vzdálenou komunikaci ve veřejných klientských sítích (ve výchozím nastavení omezeno na lokální podsíť); -WhatIf ukazuje, co by se stalo bez použití změn. Navíc, stejně jako každá standardní rutina, podporuje společné parametry (-Verbose, -ErrorAction atd.).
Nezapomeňte, že volba „Povolit“ nevytváří HTTPS listenery ani certifikáty; pokud potřebujete end-to-end šifrování od začátku a ověřování na základě certifikované, nakonfigurujte listener HTTPS a ověřte CN/SAN s názvem, který použijete v -ComputerName.
Užitečné příkazy pro vzdálenou komunikaci v prostředí WinRM a PowerShell
někteří nezbytné věci k nočnímu stolku ze dne na den:
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
Při správě Windows ve velkém měřítku umožňuje vzdálená komunikace přechod od komunikace „počítač-počítač“ k deklarativnímu a bezpečnému přístupu. Kombinací trvalých relací, silného ověřování (Kerberos/HTTPS), omezených koncových bodů a jasných tras pro diagnostiku… získáte rychlost a kontrolu aniž byste obětovali zabezpečení nebo audit. Pokud také standardizujete aktivaci GPO a zvládnete speciální případy (TrustedHosts, double hop, certifikáty), budete mít solidní vzdálenou platformu pro každodenní provoz a reakci na incidenty.
Redaktor specializovaný na problematiku technologií a internetu s více než desetiletými zkušenostmi v různých digitálních médiích. Pracoval jsem jako editor a tvůrce obsahu pro e-commerce, komunikaci, online marketing a reklamní společnosti. Psal jsem také na weby o ekonomice, financích a dalších odvětvích. Moje práce je zároveň mou vášní. Nyní prostřednictvím mých článků v Tecnobits, snažím se prozkoumat všechny novinky a nové možnosti, které nám svět technologií každý den nabízí, abychom zlepšili náš život.