Paano kontrolin ang iyong PC mula sa iyong mobile phone gamit ang PowerShell Remoting

Huling pag-update: 15/10/2025

  • Gumagamit ang pag-remote ng WinRM/WS-Man (HTTP/HTTPS) at nagbibigay-daan sa 1-to-1, 1-to-many, at paulit-ulit na session na may mga kontrol sa seguridad.
  • Kino-configure ng Enable-PSRemoting ang serbisyo, mga listener, at firewall; Ang HTTPS ay nangangailangan ng wastong certificate at CN/SAN na tugma.
  • Ang mga resulta ay ibinalik na deserialized; Ang mga pamamaraan ay ginagamit sa loob ng remote scriptblock at ang mga custom na endpoint ay ginagamit para sa pinong delegasyon.
PowerShell Remoting

Maaaring na-automate mo na ang maraming gawain gamit ang PowerShell nang lokal, ngunit nasaan ka ba talaga Ang PowerShell Remoting ay gumagawa ng pagkakaiba Ito ay kapag nagpapatakbo ka ng mga utos sa mga malalayong makina, iilan man o daan-daan, interactive o kahanay. Ang teknolohiyang ito, na magagamit mula sa Windows PowerShell 2.0 at pinahusay mula noong 3.0, ay batay sa WS-Management (WinRM) at nagko-convert PowerShell sa isang matatag, nasusukat at secure na remote na channel ng pamamahala.

Una sa lahat, mahalagang maunawaan ang dalawang pangunahing ideya: mga cmdlet na may -Parameter ng ComputerName (hal., Get-Process o Get-Service) ay hindi ang pangmatagalang landas na inirerekomenda ng Microsoft, at ang PowerShell Remoting ay hindi gumagana bilang isang "hack." Sa katunayan, nagpapatupad ng mutual authentication, audit logs at iginagalang ang iyong mga karaniwang pahintulot, nang hindi nag-iimbak ng mga kredensyal o mahiwagang pagpapatakbo ng anumang bagay na may sobrang mga pribilehiyo.

Ano ang PowerShell Remoting at bakit ito ginagamit?

may Pag-alis ng PowerShell maaari mong isagawa ang halos anumang utos nang malayuan na maaari mong ilunsad sa isang lokal na session, mula sa mga serbisyo sa pag-query hanggang sa pag-deploy ng mga configuration, at gawin ito sa daan-daang mga computer nang sabay-sabay. Hindi tulad ng mga cmdlet na tumatanggap ng -ComputerName (marami ang gumagamit ng DCOM/RPC), Remoting naglalakbay sa pamamagitan ng WS-Man (HTTP/HTTPS), na mas firewall-friendly, ay nagbibigay-daan sa parallelism at offloads na gumana sa remote host, hindi sa kliyente.

Isinasalin ito sa tatlong praktikal na pakinabang: mas mahusay na pagganap sa napakalaking pagpapatupad, mas kaunting alitan sa mga network na may mga mahigpit na panuntunan at modelo ng seguridad na naaayon sa Kerberos/HTTPS. Higit pa rito, sa pamamagitan ng hindi pagdepende sa bawat cmdlet upang ipatupad ang sarili nitong remote, Remoting Gumagana ito para sa anumang script o papel na available sa destinasyon.

Bilang default, ang mga kamakailang Windows Server ay may naka-enable na Remoting; sa Windows 10/11 i-activate mo ito na may isang solong cmdlet. At oo, maaari kang gumamit ng mga kahaliling kredensyal, paulit-ulit na session, custom na endpoint, at higit pa.

Tandaan: Ang pag-remote ay hindi kasingkahulugan ng pagbubukas ng lahat. Bilang default, mga administrador lamang Maaari silang kumonekta, at ang mga aksyon ay isinasagawa sa ilalim ng kanilang pagkakakilanlan. Kung kailangan mo ng pinong delegasyon, nagbibigay-daan sa iyo ang mga custom na endpoint na ilantad lang ang mahahalagang utos.

Arkitektura ng PowerShell Remoting

Paano ito gumagana sa loob: WinRM, WS-Man, at mga port

Gumagana ang PowerShell Remoting sa isang modelo ng client-server. Nagpapadala ang kliyente ng mga kahilingan sa WS-Management sa pamamagitan ng HTTP (5985/TCP) o HTTPS (5986/TCP). Sa target, ang serbisyo ng Windows Remote Management (WinRM) ay nakikinig, niresolba ang endpoint (session configuration), at nagho-host ng PowerShell session sa background (wsmprovhost.exe process), pagbabalik ng mga serialized na resulta sa kliyente sa XML sa pamamagitan ng SOAP.

Sa unang pagkakataong paganahin mo ang Pag-remote, ang mga tagapakinig ay iko-configure, ang naaangkop na pagbubukod sa firewall ay mabubuksan, at ang mga configuration ng session ay gagawin. Mula sa PowerShell 6+, maraming edisyon ang magkakasamang umiiral, at Paganahin-PSRemoting Nagrerehistro ng mga endpoint na may mga pangalan na nagpapakita ng bersyon (halimbawa, PowerShell.7 at PowerShell.7.xy).

Eksklusibong nilalaman - Mag-click Dito  Global alert para sa isang kritikal na kahinaan sa Google Chrome: kung ano ang kailangan mong malaman at kung paano protektahan ang iyong sarili

Kung pinapayagan mo lamang ang HTTPS sa iyong kapaligiran, maaari kang lumikha ng isang ligtas na tagapakinig na may sertipiko na ibinigay ng isang pinagkakatiwalaang CA (inirerekomenda). Bilang kahalili, ang isa pang alternatibo ay ang paggamit ng TrustedHosts sa isang limitadong paraan na alam ang panganib, para sa mga sitwasyon ng workgroup o mga computer na hindi domain.

Tandaan na ang Powershell Remoting ay maaaring magkasama sa mga cmdlet na may -ComputerName, ngunit Itinulak ng Microsoft ang WS-Man bilang pamantayan at patunay sa hinaharap na paraan para sa malayong pangangasiwa.

Paganahin ang PowerShell Remoting at Mga Kapaki-pakinabang na Parameter

Sa Windows, buksan lang ang PowerShell bilang administrator at tumakbo Paganahin-PSRemoting. Sinisimulan ng system ang WinRM, iko-configure ang autostart, pinapagana ang tagapakinig, at gagawa ng naaangkop na mga panuntunan sa firewall. Sa mga kliyenteng may profile sa pampublikong network, maaari mong sadyang payagan ito sa -SkipNetworkProfileCheck (at pagkatapos ay palakasin gamit ang mga partikular na panuntunan):

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

 

Pinapayagan din ng syntax, - Kumpirmahin y -Paano kung para sa kontrol ng pagbabago. Tandaan: Ito ay magagamit lamang sa Windows, at dapat mong patakbuhin ang nakataas na console. Ang mga panuntunang nilikha ay naiiba sa pagitan ng mga edisyon ng Server at Client, lalo na sa mga pampublikong network, kung saan bilang default, limitado ang mga ito sa lokal na subnet maliban kung palawakin mo ang saklaw (halimbawa, sa Set-NetFirewallRule).

Upang ilista ang naitalang mga configuration ng session at kumpirmahin na handa na ang lahat, gamitin Get-PSSessionConfigurationKung lalabas ang PowerShell.x at mga workflow na endpoint, gumagana ang Remoting framework.

Malayong session gamit ang PowerShell

Mga mode ng paggamit: 1 hanggang 1, 1 sa marami, at paulit-ulit na mga session

Kapag kailangan mo ng interactive na console sa isang computer, pumunta sa Ipasok-PSSessionLalabas ang prompt, at lahat ng iyong ipapatupad ay mapupunta sa remote host. Maaari mong muling gamitin ang mga kredensyal gamit ang Get-Credential upang maiwasan ang patuloy na muling pagpasok sa mga ito:

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

Kung ang hinahanap mo ay magpadala ng mga utos sa ilang mga computer nang sabay-sabay, ang tool ay Invoke-Command na may scriptblock. Bilang default, naglulunsad ito ng hanggang 32 kasabay na koneksyon (naaangkop sa -ThrottleLimit). Ang mga resulta ay ibinalik bilang deserialized na mga bagay (nang walang "live" na mga pamamaraan):

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

Kailangang mag-invoke ng paraan tulad ng .Stop() o .Start()? Gawin mo. sa loob ng scriptblock sa malayong konteksto, hindi ang lokal na deserialized na bagay, at iyon lang. Kung mayroong katumbas na cmdlet (Stop-Service/Start-Service), kadalasang mas mainam na gamitin ito para sa kalinawan.

Upang maiwasan ang gastos sa pagsisimula at pagtatapos ng mga session sa bawat tawag, gumawa ng a Patuloy na PSSession at muling gamitin ito sa maraming invocation. Gumamit ng New-PSSession para gawin ang koneksyon, at gamitin ang Invoke-Command-Session para muling gamitin ang tunnel. Huwag kalimutang isara ito gamit ang Remove-PSSession kapag tapos ka na.

Pagse-serye, mga limitasyon at magagandang kasanayan

Isang mahalagang detalye: kapag naglalakbay, ang mga bagay ay "+flatten" at dumating bilang deserialized na mga snapshot, na may mga katangian ngunit walang mga pamamaraan. Ito ay sinadya at nakakatipid ng bandwidth, ngunit nangangahulugan ito na hindi mo magagamit ang mga miyembro na nagpapatupad ng lohika (tulad ng .Kill()) sa lokal na kopya. Ang solusyon ay halata: gamitin ang mga pamamaraang iyon. sa malayo at kung kailangan mo lang ng ilang partikular na field, i-filter gamit ang Select-Object para magpadala ng mas kaunting data.

Eksklusibong nilalaman - Mag-click Dito  Paano maiwasan ang pinsala sa iyong mga file?

Sa mga script, iwasan ang Enter-PSSession (inilaan para sa interactive na paggamit) at gamitin ang Invoke-Command na may mga script block. Kung inaasahan mo ang maraming tawag o kailangan mong panatilihin ang estado (mga variable, na-import na mga module), gumamit ng mga paulit-ulit na sesyon at, kung naaangkop, idiskonekta/muling ikonekta ang mga ito gamit ang Disconnect-PSSession/Connect-PSSession sa PowerShell 3.0+.

Authentication, HTTPS, at Off-Domain na Sitwasyon

Sa isang domain, ang native na pagpapatotoo ay Kerberos At lahat ay dumadaloy. Kapag hindi ma-verify ng device ang pangalan ng server, o kumonekta ka sa isang CNAME IP o alias, kailangan mo ng isa sa dalawang opsyong ito: 1) Listener HTTPS na may sertipiko na ibinigay ng isang CA na pinagkakatiwalaan mo, o 2) idagdag ang patutunguhan (pangalan o IP) sa TrustedHosts at gumamit ng mga kredensyalHindi pinapagana ng pangalawang opsyon ang mutual authentication para sa host na iyon, kaya binabawasan nito ang saklaw sa pinakamababang kinakailangan.

Ang pag-set up ng isang HTTPS listener ay nangangailangan ng isang certificate (perpektong mula sa iyong PKI o isang pampublikong CA), na naka-install sa store ng team at nakatali sa WinRM. Binuksan ang Port 5986/TCP sa firewall at, mula sa kliyente, ginamit. -UseSSL sa mga malalayong cmdlet. Para sa pagpapatunay ng certificate ng kliyente, maaari mong imapa ang isang cert sa isang lokal na account at kumonekta sa -CertificateThumbprint (Hindi ito direktang tinatanggap ng Enter-PSSession; lumikha muna ng session gamit ang New-PSSession.)

Ang pangalawang paglukso at pagtatalaga ng mga kredensyal

Lumilitaw ang sikat na "double hop" kapag, pagkatapos kumonekta sa isang server, kailangan mo ang server na iyon upang ma-access ang isang ikatlong mapagkukunan sa ngalan mo (hal., isang bahagi ng SMB). Mayroong dalawang paraan upang payagan ito: CredSSP at nakabatay sa mapagkukunan na limitadong delegasyon ng Kerberos.

may CredSSP Pinapagana mo ang kliyente at tagapamagitan na tahasang magtalaga ng mga kredensyal, at magtatakda ka ng patakaran (GPO) upang payagan ang paglalaan sa mga partikular na computer. Mabilis itong i-configure, ngunit hindi gaanong secure dahil naglalakbay ang mga kredensyal sa malinaw na text sa loob ng naka-encrypt na tunnel. Laging limitahan ang mga pinagmulan at destinasyon.

Ang gustong alternatibo sa domain ay ang pinigilan ang delegasyon ng Kerberos (resource-based constrained delegation) sa modernong AD. Nagbibigay-daan ito sa endpoint na umasa sa pagtanggap ng delegasyon mula sa middlepoint para sa mga partikular na serbisyo, pag-iwas sa paglantad ng iyong pagkakakilanlan sa unang koneksyon. Nangangailangan ng kamakailang mga controller ng domain at isang na-update na RSAT.

Mga Custom na Endpoint (Mga Configuration ng Session)

Isa sa mga hiyas ng Remoting ay ang makapagrehistro ng mga punto ng koneksyon iniangkop na mga kakayahan at limitasyon. Una, bumuo ka ng isang file gamit ang New-PSSessionConfigurationFile (mga module na paunang i-load, nakikitang mga function, alias, ExecutionPolicy, LanguageMode, atbp.), at pagkatapos ay irehistro mo ito sa Register-PSSessionConfiguration, kung saan maaari mong itakda RunAsCredential at mga pahintulot (SDDL o GUI interface na may -ShowSecurityDescriptorUI).

Para sa ligtas na delegasyon, ilantad lamang kung ano ang kinakailangan sa -VisibleCmdlets/-VisibleFunctions at huwag paganahin ang libreng scripting kung naaangkop sa LanguageMode RestrictedLanguage o Walang Wika. Kung aalis ka sa FullLanguage, maaaring gumamit ng script block ang isang tao para mag-invoke ng mga hindi na-expose na command, na, kasama ng RunAs, ito ay magiging isang butas. Idisenyo ang mga endpoint na ito gamit ang isang fine-tooth comb at idokumento ang kanilang saklaw.

Mga Domain, GPO, at Groupware

Sa AD maaari mong i-deploy ang Powershell Remoting sa sukat na may GPO: payagan ang awtomatikong pagsasaayos ng mga tagapakinig ng WinRM, itakda ang serbisyo sa Awtomatiko, at lumikha ng pagbubukod sa firewall. Tandaan na ang mga GPO ay nagbabago ng mga setting, ngunit hindi nila palaging ino-on ang serbisyo kaagad; minsan kailangan mong i-restart o pilitin ang isang gpupdate.

Eksklusibong nilalaman - Mag-click Dito  Paano gamitin ang Norton Mobile Security?

Sa mga workgroup (hindi domain), i-configure ang Pag-remote gamit ang Paganahin-PSRemoting, itakda ang TrustedHosts sa client (winrm set winrm/config/client @{TrustedHosts=»host1,host2″}) at gumamit ng mga lokal na kredensyal. Para sa HTTPS, maaari mong i-mount ang mga self-signed na certificate, bagama't inirerekomendang gumamit ng pinagkakatiwalaang CA at patunayan ang pangalan na gagamitin mo sa -ComputerName sa certificate (CN/SAN match).

Mga pangunahing cmdlet at syntax

Ang isang dakot ng commandos ay sumasakop sa 90% ng mga pang-araw-araw na senaryo. Upang i-activate/i-deactivate:

Enable-PSRemoting    
Disable-PSRemoting

Interactive na session 1 hanggang 1 at lumabas:

Enter-PSSession -ComputerName SEC504STUDENT 
Exit-PSSession

1 sa marami, na may paralelismo at mga kredensyal:

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

Mga paulit-ulit na sesyon at muling gamitin:

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

Pagsubok at WinRM Kapaki-pakinabang:

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

Mga praktikal na tala sa firewall, network at mga port

Buksan ang 5985/TCP para sa HTTP at 5986/TCP para sa HTTPS sa target na computer at sa anumang intermediate firewallSa mga kliyente ng Windows, ang Enable-PSRemoting ay gumagawa ng mga panuntunan para sa domain at pribadong mga profile; para sa mga pampublikong profile, ito ay limitado sa lokal na subnet maliban kung babaguhin mo ang saklaw gamit ang Set-NetFirewallRule -RemoteAddress Any (isang halaga na maaari mong masuri batay sa iyong panganib).

Kung gumagamit ka ng mga pagsasama-sama ng SOAR/SIEM na nagpapatakbo ng mga malalayong command (hal. mula sa XSOAR), tiyaking mayroon ang server Resolusyon ng DNS sa mga host, koneksyon sa 5985/5986, at mga kredensyal na may sapat na lokal na pahintulot. Sa ilang sitwasyon, ang NTLM/Basic na pagpapatotoo ay maaaring mangailangan ng pagsasaayos (hal., paggamit ng lokal na user sa Basic na may SSL).

Paganahin-PSRemoting Parameter (Buod ng Operasyon)

-Ang kumpirmasyon ay humihingi ng kumpirmasyon bago isagawa; -Puwersa binabalewala ang mga babala at gawin ang mga kinakailangang pagbabago; -SkipNetworkProfileCheck ay nagbibigay-daan sa Remoting sa mga pampublikong network ng kliyente (limitado bilang default sa lokal na subnet); -WhatIf ay nagpapakita sa iyo kung ano ang mangyayari nang hindi nag-aaplay ng mga pagbabago. Bilang karagdagan, tulad ng anumang karaniwang cmdlet, sinusuportahan nito karaniwang mga parameter (-Verbose, -ErrorAction, atbp.).

Tandaan na ang "Paganahin" ay hindi gumagawa ng mga tagapakinig o certificate ng HTTPS para sa iyo; kung kailangan mo ng end-to-end encryption mula sa simula at authentication batay sa mga sertipiko, i-configure ang tagapakinig ng HTTPS at i-validate ang CN/SAN laban sa pangalang gagamitin mo sa -ComputerName.

Mga Kapaki-pakinabang na WinRM at PowerShell Remoting Command

Ilan mahahalagang bagay sa tabi ng kama para sa araw-araw:

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

Kapag pinamamahalaan ang Windows sa sukat, pinapayagan ka ng Remoting na lumipat mula sa "computer-to-computer" patungo sa isang deklaratibo at secure na diskarte. Sa pamamagitan ng pagsasama-sama ng mga paulit-ulit na session, malakas na pagpapatotoo (Kerberos/HTTPS), pinaghihigpitang mga endpoint, at malinaw na mga bakas para sa mga diagnostic, nakakakuha ka ng bilis at kontrol nang hindi isinakripisyo ang seguridad o pag-audit. Kung i-standardize mo rin ang GPO activation at master ang mga espesyal na kaso (TrustedHosts, double hop, mga certificate), magkakaroon ka ng solidong remote na platform para sa pang-araw-araw na operasyon at pagtugon sa insidente.

hindi nakikitang malware
Kaugnay na artikulo:
Paano protektahan ang iyong PC mula sa hindi nakikitang malware tulad ng XWorm at NotDoor