Kiel regi vian komputilon per via poŝtelefono per PowerShell Remoting

Lasta ĝisdatigo: 15/10/2025

  • Remogado uzas WinRM/WS-Man (HTTP/HTTPS) kaj permesas 1-al-1, 1-al-multajn, kaj persistajn sesiojn kun sekurecaj kontroloj.
  • Enable-PSRemoting agordas la servon, aŭskultantojn kaj fajromuron; HTTPS postulas validan atestilon kaj CN/SAN-kongruon.
  • La rezultoj estas redonitaj malseriigitaj; metodoj estas alvokitaj ene de la fora skriptbloko kaj kutimaj finpunktoj estas uzataj por fajna delegado.
PowerShell-malproksimigado

Vi eble jam aŭtomatigas multajn taskojn per PowerShell loke, sed kie vi vere... PowerShell Remoting faras la diferencon Ĝi estas kiam vi ekzekutas komandojn sur malproksimaj maŝinoj, ĉu kelkaj aŭ centoj, interage aŭ paralele. Ĉi tiu teknologio, havebla ekde Windows PowerShell 2.0 kaj plibonigita ekde 3.0, baziĝas sur WS-Management (WinRM) kaj konvertas PowerShell en fortika, skalebla kaj sekura fora administrada kanalo.

Unue, gravas kompreni du ŝlosilajn ideojn: cmdletojn kun -Komputilnomo parametro (ekz., Get-Process aŭ Get-Service) ne estas la longdaŭra vojo rekomendita de Microsoft, kaj PowerShell Remoting ne funkcias kiel "hako". Fakte, devigas reciprokan aŭtentikigon, kontrolas protokolojn kaj respektas viajn kutimajn permesojn, sen konservi akreditaĵojn aŭ magie funkciigi ion ajn kun superprivilegioj.

Kio estas PowerShell Remoting kaj kial uzi ĝin?

con PowerShell-malproksimigado vi povas plenumi preskaŭ ajnan komandon malproksime ke vi povus lanĉi en loka sesio, de pridemandado de servoj ĝis deplojo de agordoj, kaj fari tion sur centoj da komputiloj samtempe. Male al cmdletoj kiuj akceptas -ComputerName (multaj uzas DCOM/RPC), Remoting vojaĝas per WS-Man (HTTP/HTTPS), kiu estas pli fajromur-amika, permesas paralelismon kaj malŝarĝas laboron al la fora gastiganto, ne al la kliento.

Tio tradukiĝas al tri praktikaj avantaĝoj: pli bona rendimento en amasaj efektivigoj, malpli da frotado en retoj kun restriktaj reguloj kaj sekureca modelo kongrua kun Kerberos/HTTPS. Krome, ne depende de ĉiu cmdlet por efektivigi sian propran malproksiman servon, Remoting Ĝi funkcias por iu ajn manuskripto aŭ rolo kiu estas havebla ĉe la celloko.

Defaŭlte, lastatempaj Vindozaj Serviloj venas kun Remoting ebligita; en Vindozo 10/11 vi aktivigas ĝin per ununura cmdlet. Kaj jes, vi povas uzi alternativajn akreditaĵojn, konstantajn sesiojn, kutimajn finpunktojn kaj pli.

Noto: Malproksima uzado ne estas sinonima kun malfermo de ĉio. Defaŭlte, nur administrantoj Ili povas konektiĝi, kaj agoj estas plenumataj sub ilia identeco. Se vi bezonas detalan delegadon, kutimaj finpunktoj permesas al vi malkaŝi nur la esencajn komandojn.

PowerShell-malproksima arkitekturo

Kiel ĝi funkcias interne: WinRM, WS-Man kaj pordoj

PowerShell Remoting funkcias laŭ kliento-servila modelo. La kliento sendas petojn de WS-Management per HTTP (5985/TCP) aŭ HTTPS (5986/TCP)Ĉe la celo, la servo Windows Remote Management (WinRM) aŭskultas, solvas la finpunkton (seanca agordo), kaj gastigas la PowerShell-sesion en la fono (wsmprovhost.exe procezo), resendante seriigitajn rezultojn al la kliento en XML per SOAP.

La unuan fojon kiam vi ebligas Remoting, aŭskultantoj estas agorditaj, la taŭga fajromura escepto estas malfermita, kaj seancaj agordoj estas kreitaj. Ekde PowerShell 6+, pluraj eldonoj kunekzistas, kaj Ebligi-PSRemoting Registras finpunktojn kun nomoj kiuj reflektas la version (ekzemple, PowerShell.7 kaj PowerShell.7.xy).

Ekskluziva enhavo - Klaku Ĉi tie  Kiel mi solvi rendimentajn problemojn kun Intego Mac Internet Security?

Se vi permesas nur HTTPS en via ĉirkaŭaĵo, vi povas krei sekura aŭskultanto kun atestilo eldonita de fidinda CA (rekomendita). Alternative, alia alternativo estas uzi TrustedHosts limigite, riskkonscie, por laborgrupaj scenaroj aŭ ne-domajnaj komputiloj.

Notu, ke Powershell Remoting povas kunekzisti kun cmdlet-oj kun -ComputerName, sed Mikrosofto puŝas WS-Man kiel la norma kaj estontec-rezista maniero por fora administrado.

Ebligi PowerShell-Remoting kaj Utilajn Parametrojn

En Vindozo, simple malfermu PowerShell kiel administranto kaj lanĉu Ebligi-PSRemotingLa sistemo lanĉas WinRM, agordas aŭtomatan starton, ebligas la aŭskultanton, kaj kreas la taŭgajn regulojn de fajromuro. Ĉe klientoj kun publika retprofilo, vi povas intence permesi tion per -PreterlasiRetanProfilonKontroli (kaj poste plifortigu per specifaj reguloj):

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

 

La sintakso ankaŭ permesas, -Konfirmi y -KioSe por ŝanĝkontrolo. Memoru: Ĝi estas havebla nur en Vindozo, kaj vi devas ruligi la altigitan konzolon. La kreitaj reguloj malsamas inter Servilaj kaj Klientaj eldonoj, precipe ĉe publikaj retoj, kie defaŭlte ili estas limigitaj al la loka subreto krom se vi vastigas la amplekson (ekzemple, per Set-NetFirewallRule).

Por listigi jam registritajn seancajn agordojn kaj konfirmi, ke ĉio estas preta, uzu Akiri-PSSessionConfigurationSe la finpunktoj PowerShell.x kaj Workflow aperas, la Remoting-kadro funkcias.

Fora sesio kun PowerShell

Uzreĝimoj: 1 al 1, 1 al multaj, kaj konstantaj sesioj

Kiam vi bezonas interagan konzolon sur unu komputilo, turnu vin al Enigu-PSSesionLa prompto aperos, kaj ĉio, kion vi efektivigos, iros al la fora gastiganto. Vi povas reuzi akreditaĵojn per Get-Credential por eviti konstante reenigi ilin:

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

Se vi serĉas sendi komandojn al pluraj komputiloj samtempe, la ilo estas Alvoki-Komandon per skriptbloko. Defaŭlte, ĝi lanĉas ĝis 32 samtempajn konektojn (alĝustigeblaj per -ThrottleLimit). La rezultoj estas redonitaj kiel malseriigitaj objektoj (sen "vivaj" metodoj):

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

Ĉu vi bezonas alvoki metodon kiel .Stop() aŭ .Start()? Faru ĝin. ene de la skriptbloko en la fora kunteksto, ne la loka malseriigita objekto, kaj jen tio. Se ekzistas ekvivalenta cmdleto (Stop-Service/Start-Service), kutime estas pli bone uzi ĝin por klareco.

Por eviti la koston de komencado kaj fino de sesioj ĉe ĉiu voko, kreu Persista PSSesio kaj reuzu ĝin tra pluraj alvokoj. Uzu New-PSSession por krei la konekton, kaj uzu Invoke-Command-Session por reuzi la tunelon. Ne forgesu fermi ĝin per Remove-PSSession kiam vi finos.

Serialigo, limoj kaj bonaj praktikoj

Grava detalo: dum vojaĝado, objektoj "+platiĝas" kaj alvenas kiel malseriigitaj momentfotoj, kun ecoj sed sen metodoj. Ĉi tio estas intenca kaj ŝparas bendlarĝon, sed ĝi signifas, ke vi ne povas uzi membrojn, kiuj plenumas logikon (kiel .Kill()) sur la loka kopio. La solvo estas evidenta: alvoki tiujn metodojn. malproksime kaj se vi bezonas nur certajn kampojn, filtru per Select-Object por sendi malpli da datumoj.

Ekskluziva enhavo - Klaku Ĉi tie  Kiel eviti blokojn kaj sankciojn ĉe TikTok?

En skriptoj, evitu Enter-PSSession (celita por interaga uzo) kaj uzu Invoke-Command kun skriptaj blokoj. Se vi antaŭvidas plurajn vokojn aŭ bezonas konservi staton (variabloj, importitaj moduloj), uzi konstantajn sesiojn kaj, se aplikeble, malkonekti/rekonekti ilin per Disconnect-PSSession/Connect-PSSession en PowerShell 3.0+.

Aŭtentigo, HTTPS, kaj Eksterdomajnaj Scenaroj

En domajno, denaska aŭtentigo estas Kerberos Kaj ĉio fluas. Kiam la aparato ne povas kontroli la servilnomon, aŭ vi konektas al CNAME IP-adreso aŭ kaŝnomo, vi bezonas unu el ĉi tiuj du ebloj: 1) Aŭskultanto HTTPS kun atestilo eldonita de CA, kiun vi fidas, aŭ 2) aldonu la cellokon (nomon aŭ IP-adreson) al TrustedHosts kaj uzi akreditaĵojnLa dua opcio malebligas reciprokan aŭtentigon por tiu gastiganto, do ĝi reduktas la amplekson al la minimumo necesa.

Agordi HTTPS-aŭskultilon postulas atestilon (ideale de via PKI aŭ publika CA), instalitan en la teama vendejo kaj ligitan al WinRM. Pordo 5986/TCP estas poste malfermita en la fajromuro kaj, de la kliento, uzata. -UzuSSL en malproksimaj cmdletoj. Por aŭtentikigo de klienta atestilo, vi povas mapi atestilon al loka konto kaj konekti kun -Atestila Dikfingrospuro (Enter-PSSession ne akceptas ĉi tion rekte; kreu la sesion unue per New-PSSession.)

La dua salto kaj delegado de akreditaĵoj

La fama "duobla salto" aperas kiam, post konekto al servilo, vi bezonas ke tiu servilo aliru tria rimedo nome de vi (ekz., SMB-divido). Ekzistas du manieroj ebligi tion: CredSSP kaj rimed-bazita limigita Kerberos-delegacio.

con CredSSP Vi ebligas al la kliento kaj peranto eksplicite delegi akreditaĵojn, kaj vi agordas politikon (GPO) por permesi delegacion al specifaj komputiloj. Ĝi estas rapida por agordi, sed malpli sekura ĉar la akreditaĵoj vojaĝas en klara teksto ene de la ĉifrita tunelo. Ĉiam limigu fontojn kaj cellokojn.

La preferata alternativo en la domajno estas la limigita Kerberos-delegacio (rimedo-bazita limigita delegacio) en moderna AD. Ĉi tio permesas al la finpunkto fidi je ricevado de delegacio de la meza punkto por specifaj servoj, evitante malkaŝi vian identecon dum la komenca konekto. Postulas lastatempajn domajnajn regilojn kaj ĝisdatigitan RSAT.

Propraj Finpunktoj (Seancaj Agordoj)

Unu el la gemoj de Remoting estas la kapablo registri konektopunktojn kun adaptitaj kapabloj kaj limojUnue vi generas dosieron per New-PSSessionConfigurationFile (moduloj por antaŭŝargi, videblaj funkcioj, kaŝnomoj, ExecutionPolicy, LanguageMode, ktp.), kaj poste vi registras ĝin per Register-PSSessionConfiguration, kie vi povas agordi RunAsCredential kaj permesoj (SDDL aŭ GUI-interfaco kun -ShowSecurityDescriptorUI).

Por sekura delegado, malkaŝu nur tion, kio estas necesa per -VisibleCmdlets/-VisibleFunctions kaj malŝaltu liberan skriptadon se konvene per Lingvoreĝimo Limigita Lingvo aŭ NoLanguage. Se vi forlasas FullLanguage, iu povus uzi skriptblokon por alvoki nemalkovritajn komandojn, kiuj, kombinite kun RunAs, ĝi estus truoDezajnu ĉi tiujn finpunktojn per fajna kombilo kaj dokumentu ilian amplekson.

Domajnoj, GPO-oj, kaj Grupprogramaro

En AD vi povas deploji Powershell Remoting je granda skalo per GPO: permesu aŭtomatan agordon de WinRM-aŭskultiloj, agordi la servon al Aŭtomata, kaj kreu la fajromuran escepton. Memoru, ke GPO-oj ŝanĝas agordojn, sed ili ne ĉiam tuj ŝaltas la servon; kelkfoje vi bezonas rekomenci aŭ devigi gpupdate.

Ekskluziva enhavo - Klaku Ĉi tie  Kiel scii vian pasvorton de Gmail

En laborgrupoj (ne-domajnaj), agordu Remotadon per Ebligi-PSRemoting, agordu TrustedHosts ĉe la kliento (winrm set winrm/config/client @{TrustedHosts=»host1,host2″}) kaj uzu lokajn akreditaĵojn. Por HTTPS, vi povas munti mem-subskribitajn atestilojn, kvankam estas rekomendinde uzi fidindan CA kaj validigi la nomon kiun vi uzos en -Komputilnomo en la atestilo (CN/SAN-kongruo).

Ŝlosilaj cmdletoj kaj sintakso

Manpleno da komandoj kovras la 90% de ĉiutagaj scenarojPor aktivigi/malaktivigi:

Enable-PSRemoting    
Disable-PSRemoting

Interaga sesio 1 al 1 kaj eliro:

Enter-PSSession -ComputerName SEC504STUDENT 
Exit-PSSession

1 al multaj, kun paraleleco kaj akreditaĵoj:

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

Persistaj kunsidoj kaj reuzu:

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

Testado kaj WinRM utila:

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

Praktikaj notoj pri fajromuro, reto kaj pordoj

Malfermu 5985/TCP por HTTP kaj 5986/TCP por HTTPS sur la cela komputilo kaj sur ajna meza fajromuroĈe Vindozaj klientoj, Enable-PSRemoting kreas regulojn por domajnaj kaj privataj profiloj; por publikaj profiloj, ĝi estas limigita al la loka subreto krom se vi modifas la amplekson per Set-NetFirewallRule -RemoteAddress Any (valoro, kiun vi povas taksi laŭ via risko).

Se vi uzas SOAR/SIEM-integriĝojn, kiuj plenumas malproksimajn komandojn (ekz. de XSOAR), certigu, ke la servilo havas DNS-rezolucio al la gastigantoj, konektebleco al 5985/5986, kaj akreditaĵoj kun sufiĉaj lokaj permesoj. En iuj kazoj, NTLM/Baza aŭtentikigo povas postuli alĝustigon (ekz., uzante lokan uzanton en Baza kun SSL).

Parametroj de Ebligi-PSRemoting (Funkcia Resumo)

-Konfirmi petas konfirmon antaŭ ol ekzekuti; -Devigi ignoras la avertojn kaj faru la necesajn ŝanĝojn; -SkipNetworkProfileCheck ebligas Remoting sur publikaj klientaj retoj (limigita defaŭlte al la loka subreto); -WhatIf montras al vi kio okazus sen apliki ŝanĝojn. Plie, kiel iu ajn norma cmdlet, ĝi subtenas komunaj parametroj (-Verboza, -EraraAgo, ktp.).

Memoru, ke "Ebligi" ne kreas HTTPS-aŭskultantojn aŭ atestilojn por vi; se vi bezonas fin-al-finan ĉifradon de la komenco kaj aŭtentigon bazitan sur atestoj, agordu la HTTPS-aŭskultilon kaj validigu CN/SAN kontraŭ la nomo, kiun vi uzos en -ComputerName.

Utilaj WinRM kaj PowerShell Remoting Commands

Iuj esencaj apudlitaĵaj aĵoj por ĉiutaga vivo:

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

Kiam oni administras Vindozon je granda skalo, Remoting permesas al vi ŝanĝi de "komputilo-al-komputilo" al deklara kaj sekura aliro. Kombinante persistajn sesiojn, fortan aŭtentigon (Kerberos/HTTPS), limigitajn finpunktojn kaj klarajn spurojn por diagnozo, vi akiras rapidecon kaj kontrolon sen oferi sekurecon aŭ aŭditadon. Se vi ankaŭ normigas GPO-aktivigon kaj majstras specialajn kazojn (TrustedHosts, duobla salto, atestiloj), vi havos solidan malproksiman platformon por ĉiutagaj operacioj kaj okazaĵrespondo.

nevidebla malica programaro
Rilata artikolo:
Kiel protekti vian komputilon kontraŭ nevidebla malica programaro kiel XWorm kaj NotDoor