- Distanca përdor WinRM/WS-Man (HTTP/HTTPS) dhe lejon seanca 1-me-1, 1-me-shumë dhe seanca të vazhdueshme me kontrolle sigurie.
- Enable-PSRemoting konfiguron shërbimin, dëgjuesit dhe firewall-in; HTTPS kërkon një certifikatë të vlefshme dhe përputhje CN/SAN.
- Rezultatet kthehen të deserializuara; metodat thirren brenda bllokut të skripteve në distancë dhe pikat fundore të personalizuara përdoren për delegim të detajuar.
Ju mund të automatizoni tashmë shumë detyra me PowerShell në nivel lokal, por ku i bëni ato në të vërtetë? Telekomanda e PowerShell bën diferencën Është kur ekzekutoni komanda në makina të largëta, qofshin disa apo qindra, në mënyrë interaktive ose paralele. Kjo teknologji, e disponueshme që nga Windows PowerShell 2.0 dhe e përmirësuar që nga versioni 3.0, bazohet në WS-Management (WinRM) dhe konverton PowerShell në një kanal menaxhimi në distancë të fuqishëm, të shkallëzueshëm dhe të sigurt.
Para së gjithash, është e rëndësishme të kuptohen dy ide kryesore: cmdlet-et me -Parametri Emri i Kompjuterit (p.sh., Get-Process ose Get-Service) nuk janë rruga afatgjatë e rekomanduar nga Microsoft, dhe PowerShell Remoting nuk funksionon si një "hack". Në fakt, zbaton vërtetimin e ndërsjellë, regjistron auditimin dhe respekton lejet tuaja të zakonshme, pa ruajtur kredencialet ose pa ekzekutuar në mënyrë magjike asgjë me superprivilegje.
Çfarë është PowerShell Remoting dhe pse e përdorim atë?
me PowerShell Remote mundeni ekzekutoni pothuajse çdo komandë nga distanca që mund ta nisni në një seancë lokale, nga shërbimet e pyetjeve deri te vendosja e konfigurimeve, dhe ta bëni këtë në qindra kompjuterë njëkohësisht. Ndryshe nga cmdlet-et që pranojnë -Emri i Kompjuterit (shumë përdorin DCOM/RPC), Largimi udhëton nëpërmjet WS-Man (HTTP/HTTPS), i cili është më miqësor me firewall-in, lejon paralelizëm dhe e transferon punën te hosti i largët, jo te klienti.
Kjo përkthehet në tre avantazhe praktike: performancë më të mirë në ekzekutime masive, më pak fërkime në rrjete me rregulla kufizuese dhe një model sigurie në përputhje me Kerberos/HTTPS. Për më tepër, duke mos u varur nga secili cmdlet për të zbatuar telekomandën e vet, Remoting Funksionon për çdo skenar ose rol që është i disponueshëm në destinacion.
Si parazgjedhje, serverët e fundit të Windows vijnë me funksionin e telekomandës të aktivizuar; në Windows 10/11 ti e aktivizon atë me një cmdlet të vetëm. Dhe po, mund të përdorni kredenciale alternative, seanca të vazhdueshme, pika fundore të personalizuara dhe më shumë.
Shënim: Telëzimi nuk është sinonim i hapjes së gjithçkaje. Si parazgjedhje, vetëm administratorët Ato mund të lidhen dhe veprimet ekzekutohen nën identitetin e tyre. Nëse keni nevojë për delegim të detajuar, pikat fundore të personalizuara ju lejojnë të ekspozoni vetëm komandat thelbësore.

Si funksionon brenda: WinRM, WS-Man dhe portet
PowerShell Remoting funksionon në një model klient-server. Klienti dërgon kërkesa WS-Management nëpërmjet HTTP (5985/TCP) ose HTTPS (5986/TCP)Në objektiv, shërbimi i Menaxhimit në Distancë të Windows (WinRM) dëgjon, zgjidh pikën fundore (konfigurimin e sesionit) dhe pret sesionin PowerShell në sfond (procesi wsmprovhost.exe), kthimi i rezultateve të serializuara te klienti në XML nëpërmjet SOAP.
Herën e parë që aktivizoni Remoting, konfigurohen dëgjuesit, hapet përjashtimi i duhur i firewall-it dhe krijohen konfigurimet e sesionit. Nga PowerShell 6+, bashkëjetojnë shumë versione dhe Aktivizo-PSRemoting Regjistron pikat fundore me emra që pasqyrojnë versionin (për shembull, PowerShell.7 dhe PowerShell.7.xy).
Nëse lejoni vetëm HTTPS në mjedisin tuaj, mund të krijoni një dëgjues i sigurt me një certifikatë të lëshuar nga një CA i besuar (rekomandohet). Si alternativë tjetër, një alternativë tjetër është përdorimi i TrustedHosts në një mënyrë të kufizuar dhe të vetëdijshme për rrezikun, për skenarë të grupeve të punës ose kompjuterë jo-domeni.
Vini re se Powershell Remoting mund të bashkëjetojë me cmdlet-et me -ComputerName, por Microsoft shtyn përpara WS-Man si mënyra standarde dhe e përshtatshme për të ardhmen për administrim në distancë.
Aktivizimi i telekomandës PowerShell dhe parametrave të dobishëm
Në Windows, thjesht hapni PowerShell si administrator dhe ekzekutoni Aktivizo-PSRemotingSistemi nis WinRM, konfiguron nisjen automatike, aktivizon dëgjuesin dhe krijon rregullat e duhura të firewall-it. Në klientët me një profil rrjeti publik, ju mund ta lejoni qëllimisht këtë me -Kapërce Kontrollin e Profilit të Rrjetit (dhe pastaj përforcojeni me rregulla specifike):
Enable-PSRemoting
Enable-PSRemoting -Force
Enable-PSRemoting -SkipNetworkProfileCheck -Force
Sintaksa gjithashtu lejon, -Konfirmo y -Po nese për kontrollin e ndryshimeve. Mos harroni: Është i disponueshëm vetëm në Windows, dhe duhet të ekzekutoni konsolën e ngritur. Rregullat e krijuara ndryshojnë midis versioneve të Serverit dhe Klientit, veçanërisht në rrjetet publike, ku si parazgjedhje ato janë të kufizuara në nënrrjetin lokal përveç nëse e zgjeroni fushëveprimin (për shembull, me Set-NetFirewallRule).
Për të listuar konfigurimet e sesioneve të regjistruara tashmë dhe për të konfirmuar që gjithçka është gati, përdorni Get-PSSessionConfigurationNëse shfaqen pikat fundore të PowerShell.x dhe Workflow, kuadri Remoting është funksional.

Mënyrat e përdorimit: 1 në 1, 1 në shumë dhe seanca të vazhdueshme
Kur ju nevojitet një konsol interaktiv në një kompjuter të vetëm, drejtohuni te Shkruani-PSSessionDo të shfaqet një njoftim dhe çdo gjë që ekzekutoni do të shkojë te hosti i largët. Mund të ripërdorni kredencialet me Get-Credential për të shmangur rifutjen e tyre të vazhdueshme:
$cred = Get-Credential
Enter-PSSession -ComputerName dc01 -Credential $cred
Exit-PSSession
Nëse ajo që po kërkoni është të dërgoni komanda në disa kompjuterë njëkohësisht, mjeti është Kërkoj-Komanda me një bllok skriptesh. Si parazgjedhje, ai nis deri në 32 lidhje të njëkohshme (të rregullueshme me -ThrottleLimit). Rezultatet kthehen si objekte të deserializuara (pa metoda "të drejtpërdrejta"):
Invoke-Command -ComputerName dc01,sql02,web01 -ScriptBlock { Get-Service -Name W32Time } -Credential $cred
Keni nevojë të thirrni një metodë si .Stop() ose .Start()? Bëjeni. brenda bllokut të skriptit në kontekstin e largët, jo objektin lokal të deserializuar, dhe kaq. Nëse ka një cmdlet ekuivalent (Stop-Service/Start-Service), zakonisht është e preferueshme ta përdorni atë për qartësi.
Për të shmangur koston e fillimit dhe mbarimit të seancave në çdo thirrje, krijoni një Sesioni i vazhdueshëm i PSS-së dhe ripërdoreni atë nëpër thirrje të shumëfishta. Përdorni New-PSSession për të krijuar lidhjen dhe përdorni Invoke-Command-Session për të ripërdorur tunelin. Mos harroni ta mbyllni atë me Remove-PSSession kur të keni mbaruar.
Serializimi, kufizimet dhe praktikat e mira
Një detaj i rëndësishëm: kur udhëtojnë, objektet "+rrafshohen" dhe mbërrijnë si pamje të çserializuara, me veti por pa metoda. Kjo është e qëllimshme dhe kursen bandwidth, por do të thotë që nuk mund të përdorni anëtarë që ekzekutojnë logjikë (si .Kill()) në kopjen lokale. Zgjidhja është e qartë: thirrni ato metoda. në distancë dhe nëse ju nevojiten vetëm fusha të caktuara, filtroni me Select-Object për të dërguar më pak të dhëna.
Në skripte, shmangni Enter-PSSession (i destinuar për përdorim interaktiv) dhe përdorni Invoke-Command me blloqe skriptesh. Nëse parashikoni thirrje të shumëfishta ose keni nevojë të ruani gjendjen (variabla, module të importuara), përdorni seanca të vazhdueshme dhe, nëse është e aplikueshme, shkëputini/rilidhni ato me Disconnect-PSSession/Connect-PSSession në PowerShell 3.0+.
Autentifikimi, HTTPS dhe Skenarët Jashtë Domenit
Në një domen, autentifikimi vendas është Kerberos Dhe gjithçka rrjedh. Kur pajisja nuk mund ta verifikojë emrin e serverit, ose ju lidheni me një IP ose pseudonim CNAME, ju nevojitet një nga këto dy opsione: 1) Dëgjuesi HTTPS me certifikatë lëshuar nga një CA që ju i besoni, ose 2) shtoni destinacionin (emrin ose IP-në) te TrustedHosts dhe përdor kredencialetOpsioni i dytë çaktivizon vërtetimin e ndërsjellë për atë host, kështu që zvogëlon fushëveprimin në minimumin e nevojshëm.
Konfigurimi i një dëgjuesi HTTPS kërkon një certifikatë (idealisht nga PKI-ja juaj ose një CA publike), të instaluar në dyqanin e ekipit dhe të lidhur me WinRM. Porta 5986/TCP hapet më pas në firewall dhe, nga klienti, përdoret. -Përdor SSL në cmdlet-e të largëta. Për vërtetimin e certifikatës së klientit, mund ta lidhni një certifikatë me një llogari lokale dhe të lidheni me të. -Gjurmë gishti e Certifikatës (Enter-PSSession nuk e pranon këtë direkt; krijoni seancën së pari me New-PSSession.)
Kalimi i dytë dhe delegimi i kredencialeve
"Hopi i dyfishtë" i famshëm shfaqet kur, pasi të lidheni me një server, ju nevojitet që ai server të hyjë në një burimi i tretë në emrin tuaj (p.sh., një ndarje SMB). Ekzistojnë dy qasje për ta lejuar këtë: CredSSP dhe delegimi i Kerberos i kufizuar i bazuar në burime.
me CredSSP Ju i mundësoni klientit dhe ndërmjetësit të delegojnë në mënyrë të qartë kredencialet dhe vendosni një politikë (GPO) për të lejuar delegimin në kompjuterë specifikë. Konfigurimi është i shpejtë, por më pak i sigurt sepse kredencialet udhëtojnë në tekst të qartë brenda tunelit të enkriptuar. Kufizoni gjithmonë burimet dhe destinacionet.
Alternativa e preferuar në domen është delegim i kufizuar i Kerberos (delegim i kufizuar i bazuar në burime) në AD moderne. Kjo i lejon pikës fundore të mbështetet në marrjen e delegimit nga pika e ndërmjetme për shërbime specifike, duke shmangur ekspozimin e identitetit tuaj në lidhjen fillestare. Kërkon kontrollues të fundit të domenit dhe një RSAT të përditësuar.
Pikat e Përfundimit të Personalizuara (Konfigurimet e Sesionit)
Një nga perlat e Remoting është mundësia për të regjistruar pikat e lidhjes me aftësi dhe kufizime të përshtaturaSë pari ju gjeneroni një skedar me New-PSSessionConfigurationFile (modulet për t'u parangarkuar, funksionet e dukshme, pseudonime, ExecutionPolicy, LanguageMode, etj.), dhe pastaj e regjistroni atë me Register-PSSessionConfiguration, ku mund të vendosni RunAsCredential dhe lejet (ndërfaqja SDDL ose GUI me -ShowSecurityDescriptorUI).
Për delegim të sigurt, ekspozoni vetëm atë që është e nevojshme me -VisibleCmdlets/-VisibleFunctions dhe çaktivizoni skriptimin e lirë nëse është e përshtatshme me Modaliteti i GjuhësGjuhë e Kufizuar ose NoLanguage. Nëse largoheni nga FullLanguage, dikush mund të përdorë një bllok skripti për të thirrur komanda të paekspozuara, të cilat, të kombinuara me RunAs, do të ishte një vrimëProjektojini këto pika fundore me një krehër të imët dhe dokumentoni fushëveprimin e tyre.
Domene, GPO dhe Groupware
Në AD mund të vendosni Powershell Remoting në shkallë të gjerë me GPO: lejoni konfigurimin automatik të dëgjuesve WinRM, caktoni shërbimin në Automatikdhe krijoni përjashtimin e firewall-it. Mbani mend se GPO-të ndryshojnë cilësimet, por ato nuk e aktivizojnë gjithmonë shërbimin menjëherë; ndonjëherë ju duhet të rinisni ose të detyroni një gpupdate.
Në grupet e punës (jo-domen), konfiguroni Remoting me Aktivizo-PSRemoting, vendosni TrustedHosts në klient (winrm set winrm/config/client @{TrustedHosts=»host1,host2″}) dhe përdorni kredencialet lokale. Për HTTPS, mund të montoni certifikata të vetë-nënshkruara, megjithëse rekomandohet të përdorni një CA të besuar dhe vërteto emrin që do ta përdorni në -Emri i Kompjuterit në certifikatë (përputhje CN/SAN).
cmdlet-et kryesore dhe sintaksa
Një grusht komandosh mbulojnë 90% e skenarëve të përditshëmPër të aktivizuar/çaktivizuar:
Enable-PSRemoting
Disable-PSRemoting
Sesion interaktiv 1 me 1 dhe dalja:
Enter-PSSession -ComputerName SEC504STUDENT
Exit-PSSession
1 deri në shumë, me paralelizëm dhe kredenciale:
Invoke-Command -ComputerName dc01,sql02,web01 -ScriptBlock { Get-Service W32Time } -Credential $cred
Sesione të vazhdueshme dhe ripërdorni:
$s = New-PSSession -ComputerName localhost -ConfigurationName PowerShell.7
Invoke-Command -Session $s -ScriptBlock { $PSVersionTable }
Remove-PSSession $s
Testimi dhe WinRM E dobishme:
Test-WSMan -ComputerName host
winrm get winrm/config
winrm enumerate winrm/config/listener
winrm quickconfig -transport:https
Shënime praktike mbi firewall-in, rrjetin dhe portet
Hapni 5985/TCP për HTTP dhe 5986/TCP për HTTPS në kompjuterin e synuar dhe në çdo firewall i ndërmjetëmNë klientët Windows, Enable-PSRemoting krijon rregulla për profilet e domenit dhe ato private; për profilet publike, është i kufizuar në nënrrjetin lokal përveç nëse modifikoni fushëveprimin me Set-NetFirewallRule -RemoteAddress Any (një vlerë që mund ta vlerësoni bazuar në rrezikun tuaj).
Nëse përdorni integrime SOAR/SIEM që ekzekutojnë komanda në distancë (p.sh. nga XSOAR), sigurohuni që serveri të ketë Rezolucioni i DNS-së te hostet, lidhja me 5985/5986 dhe kredencialet me leje të mjaftueshme lokale. Në disa raste, vërtetimi NTLM/Basic mund të kërkojë rregullim (p.sh., duke përdorur një përdorues lokal në Basic me SSL).
Parametrat e Enable-PSRemoting (Përmbledhje Operacionale)
-Konfirmimi kërkon konfirmim para ekzekutimit; -Detyrimi injoron paralajmërimet dhe të bëjë ndryshimet e nevojshme; -SkipNetworkProfileCheck aktivizon Remote-in në rrjetet publike të klientëve (i kufizuar si parazgjedhje në nënrrjetin lokal); -WhatIf ju tregon se çfarë do të ndodhte pa aplikuar ndryshimet. Përveç kësaj, si çdo cmdlet standard, ai mbështet parametra të përbashkët (-I hollësishëm, -Veprim Gabimi, etj.).
Mbani mend se “Aktivizo” nuk krijon dëgjues ose certifikata HTTPS për ju; nëse keni nevojë për enkriptim nga fillimi në fund dhe vërtetim bazuar në certifikuar, konfiguroni dëgjuesin HTTPS dhe validoni CN/SAN kundrejt emrit që do të përdorni në -Emri i Kompjuterit.
Komanda të dobishme për telekomandë WinRM dhe PowerShell
disa sende thelbësore pranë shtratit për ditë në ditë:
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
Kur menaxhoni Windows në shkallë të gjerë, Remoting ju lejon të kaloni nga "kompjuter-me-kompjuter" në një qasje deklarative dhe të sigurt. Duke kombinuar seanca të vazhdueshme, autentifikim të fortë (Kerberos/HTTPS), pika fundore të kufizuara dhe gjurmë të qarta për diagnostikim, fiton shpejtësi dhe kontroll pa sakrifikuar sigurinë ose auditimin. Nëse standardizoni edhe aktivizimin e GPO-së dhe zotëroni rastet e veçanta (TrustedHosts, double hop, certifikata), do të keni një platformë të fortë në distancë për operacionet e përditshme dhe reagimin ndaj incidenteve.
Redaktor i specializuar në çështjet e teknologjisë dhe internetit me më shumë se dhjetë vjet përvojë në media të ndryshme dixhitale. Unë kam punuar si redaktor dhe krijues i përmbajtjes për kompanitë e tregtisë elektronike, komunikimit, marketingut online dhe reklamave. Kam shkruar gjithashtu në faqet e internetit të ekonomisë, financave dhe sektorëve të tjerë. Puna ime është edhe pasioni im. Tani, përmes artikujve të mi në Tecnobits, Përpiqem të eksploroj të gjitha të rejat dhe mundësitë e reja që bota e teknologjisë na ofron çdo ditë për të përmirësuar jetën tonë.