Cum să controlezi PC-ul de pe telefonul mobil folosind PowerShell Remoting

Ultima actualizare: 15/10/2025

  • Remoting-ul utilizează WinRM/WS-Man (HTTP/HTTPS) și permite sesiuni 1-la-1, 1-la-many și persistente cu controale de securitate.
  • Enable-PSRemoting configurează serviciul, listenerele și firewall-ul; HTTPS necesită un certificat valid și o potrivire CN/SAN.
  • Rezultatele sunt returnate deserializate; metodele sunt invocate în cadrul blocului de script la distanță, iar punctele finale personalizate sunt utilizate pentru o delegare detaliată.
Remoting prin PowerShell

Poate că deja automatizați multe sarcini cu PowerShell local, dar unde le automatizați cu adevărat? PowerShell Remoting face diferența Este vorba despre momentul în care executați comenzi pe mașini la distanță, fie ele câteva sau sute, interactiv sau în paralel. Această tehnologie, disponibilă de la Windows PowerShell 2.0 și îmbunătățită de la versiunea 3.0, se bazează pe WS-Management (WinRM) și convertește PowerShell într-un canal de gestionare la distanță robust, scalabil și securizat.

În primul rând, este important să înțelegem două idei cheie: cmdlet-urile cu -Parametrul NumeComputer (de exemplu, Get-Process sau Get-Service) nu reprezintă calea pe termen lung recomandată de Microsoft, iar PowerShell Remoting nu funcționează ca un „hack”. De fapt, impune autentificarea reciprocă, jurnalele de audit și respectă permisiunile obișnuite, fără a stoca acreditări sau a rula în mod magic ceva cu super privilegii.

Ce este PowerShell Remoting și de ce este folosit?

cu PowerShell la distanță s-ar putea executa aproape orice comandă de la distanță pe care le-ați putea lansa într-o sesiune locală, de la interogarea serviciilor la implementarea configurațiilor și puteți face acest lucru pe sute de computere simultan. Spre deosebire de cmdlet-urile care acceptă -ComputerName (multe folosesc DCOM/RPC), Remoting călătorește prin WS-Man (HTTP/HTTPS), care este mai prietenos cu firewall-ul, permite paralelismul și descarcă munca către gazda la distanță, nu către client.

Aceasta se traduce în trei avantaje practice: performanță mai bună în execuții masive, mai puțină frecare în rețele cu reguli restrictive și un model de securitate compatibil cu Kerberos/HTTPS. În plus, nedepinzând de fiecare cmdlet pentru implementarea propriei funcții de la distanță, Remoting Funcționează pentru orice scenariu sau rol care este disponibil la destinație.

În mod implicit, serverele Windows recente vin cu activarea funcției Remoting; în Windows 10/11 îl activezi cu un singur cmdlet. Și da, puteți utiliza acreditări alternative, sesiuni persistente, endpoint-uri personalizate și multe altele.

Notă: Accesul la distanță nu este sinonim cu deschiderea completă a tuturor funcțiilor. În mod implicit, numai administratori Se pot conecta, iar acțiunile sunt executate sub identitatea lor. Dacă aveți nevoie de o delegare detaliată, endpoint-urile personalizate vă permit să expuneți doar comenzile esențiale.

Arhitectura de remoting PowerShell

Cum funcționează în interior: WinRM, WS-Man și porturi

PowerShell Remoting funcționează într-un model client-server. Clientul trimite solicitări WS-Management prin HTTP (5985/TCP) sau HTTPS (5986/TCP)Pe țintă, serviciul Windows Remote Management (WinRM) ascultă, rezolvă endpoint-ul (configurarea sesiunii) și găzduiește sesiunea PowerShell în fundal (procesul wsmprovhost.exe). returnarea rezultatelor serializate către client în XML prin SOAP.

Prima dată când activați Remoting, se configurează listener-ele, se deschide excepția de firewall corespunzătoare și se creează configurațiile de sesiune. De la PowerShell 6+, coexistă mai multe ediții și Activați-PSRemoting Înregistrează puncte finale cu nume care reflectă versiunea (de exemplu, PowerShell.7 și PowerShell.7.xy).

Conținut exclusiv - Faceți clic aici  Cum remediez problemele de performanță cu Intego Mac Internet Security?

Dacă permiteți doar HTTPS în mediul dvs., puteți crea un ascultător sigur cu un certificat emis de o autoritate de certificare (recomandat). Alternativ, o altă alternativă este utilizarea TrustedHosts într-un mod limitat, conștient de riscuri, pentru scenarii de grup de lucru sau computere care nu aparțin domeniului.

Rețineți că Powershell Remoting poate coexista cu cmdlet-uri cu -ComputerName, dar Microsoft promovează WS-Man ca modalitate standard și pregătită pentru viitor pentru administrarea de la distanță.

Activarea comenzilor la distanță PowerShell și parametrii utili

Pe Windows, pur și simplu deschideți PowerShell ca administrator și rulați Activați-PSRemotingSistemul pornește WinRM, configurează pornirea automată, activează listener-ul și creează regulile firewall corespunzătoare. Pe clienții cu un profil de rețea publică, puteți permite acest lucru în mod deliberat cu -SkipNetworkProfileCheck (și apoi consolidați cu reguli specifice):

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

 

Sintaxa permite, de asemenea, -A confirma y -Și dacă pentru controlul schimbărilor. Rețineți: Este disponibil doar pe Windowsși trebuie să rulați consola cu privilegii ridicate. Regulile create diferă între edițiile Server și Client, în special în rețelele publice, unde, în mod implicit, sunt limitate la subrețeaua locală, cu excepția cazului în care extindeți domeniul de aplicare (de exemplu, cu Set-NetFirewallRule).

Pentru a lista configurațiile de sesiune deja înregistrate și a confirma că totul este gata, utilizați Get-PSSessionConfigurationDacă apar punctele finale PowerShell.x și Workflow, framework-ul Remoting este operațional.

Sesiune la distanță cu PowerShell

Moduri de utilizare: 1 la 1, 1 la mai multe și sesiuni persistente

Când aveți nevoie de o consolă interactivă pe un singur computer, apelați la Enter-PSSessionVa apărea solicitarea și tot ce executați va merge la gazda la distanță. Puteți reutiliza acreditările cu Get-Credential pentru a evita reintroducerea lor constantă:

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

Dacă ceea ce căutați este să trimiteți comenzi către mai multe computere simultan, instrumentul este Invocați-comandă cu un bloc de script. În mod implicit, lansează până la 32 de conexiuni simultane (reglabile cu -ThrottleLimit). Rezultatele sunt returnate ca obiecte deserializate (fără metode „live”):

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

Trebuie să invoci o metodă precum .Stop() sau .Start()? Fă-o. în interiorul blocului de script în contextul la distanță, nu obiectul deserializat local, și asta e tot. Dacă există un cmdlet echivalent (Stop-Service/Start-Service), de obicei este preferabil să îl utilizați pentru claritate.

Pentru a evita costul pornirii și încheierii sesiunilor la fiecare apel, creați un Sesiune PS persistentă și reutilizați-l în mai multe invocări. Folosiți New-PSSession pentru a crea conexiunea și utilizați Invoke-Command-Session pentru a reutiliza tunelul. Nu uitați să îl închideți cu Remove-PSSession când ați terminat.

Serializare, limite și bune practici

Un detaliu important: atunci când călătoresc, obiectele se „+aplatizează” și ajung la destinație instantanee deserializate, cu proprietăți, dar fără metode. Acest lucru este intenționat și economisește lățime de bandă, dar înseamnă că nu puteți utiliza membri care execută logică (cum ar fi .Kill()) pe copia locală. Soluția este evidentă: invocați acele metode. de la distanță și dacă aveți nevoie doar de anumite câmpuri, filtrați cu Select-Object pentru a trimite mai puține date.

Conținut exclusiv - Faceți clic aici  Cum să eviți blocurile și sancțiunile pe TikTok?

În scripturi, evitați Enter-PSSession (destinată utilizării interactive) și utilizați Invoke-Command cu blocuri de script. Dacă anticipați apeluri multiple sau trebuie să păstrați starea (variabile, module importate), utilizați sesiuni persistente și, dacă este cazul, deconectați-le/reconectați-le cu Disconnect-PSSession/Connect-PSSession în PowerShell 3.0+.

Autentificare, HTTPS și scenarii în afara domeniului

Într-un domeniu, autentificarea nativă este Kerberos Și totul merge fluent. Când dispozitivul nu poate verifica numele serverului sau vă conectați la o adresă IP CNAME sau la un alias, aveți nevoie de una dintre aceste două opțiuni: 1) Listener HTTPS cu certificat emis de o CA în care aveți încredere sau 2) adăugați destinația (numele sau adresa IP) la TrustedHosts și utilizați acreditărileA doua opțiune dezactivează autentificarea reciprocă pentru gazda respectivă, astfel încât reduce domeniul de aplicare la minimul necesar.

Configurarea unui listener HTTPS necesită un certificat (în mod ideal de la PKI sau de la o CA publică), instalat în depozitul echipei și legat la WinRM. Portul 5986/TCP este apoi deschis în firewall și, de la client, utilizat. -Utilizați SSL în cmdlet-uri la distanță. Pentru autentificarea certificatelor clientului, puteți mapa un certificat la un cont local și vă puteți conecta cu Amprentă digitală certificat (Enter-PSSession nu acceptă direct acest lucru; creați mai întâi sesiunea cu New-PSSession.)

A doua etapă și delegarea acreditărilor

Faimosul „dublu salt” apare atunci când, după conectarea la un server, aveți nevoie ca acel server să acceseze un a treia resursă în numele dumneavoastră (de exemplu, o partajare SMB). Există două abordări pentru a permite acest lucru: CredSSP și delegarea Kerberos constrânsă bazată pe resurse.

cu CredSSP Permiteți clientului și intermediarului să delege explicit acreditările și setați o politică (GPO) pentru a permite delegarea către anumite computere. Este rapid de configurat, dar mai puțin sigur deoarece acreditările circulă în text clar în tunelul criptat. Limitați întotdeauna sursele și destinațiile.

Alternativa preferată în domeniu este delegare Kerberos constrânsă (delegare constrânsă bazată pe resurse) în AD modern. Aceasta permite endpoint-ului să se bazeze pe primirea delegării de la punctul intermediar pentru servicii specifice, evitând expunerea identității dvs. la conexiunea inițială. Necesită controlere de domeniu recente și un RSAT actualizat.

Puncte finale personalizate (configurații de sesiune)

Una dintre comorile Remoting-ului este posibilitatea de a înregistra puncte de conexiune cu capacități și limite personalizateMai întâi generați un fișier cu New-PSSessionConfigurationFile (module de preîncărcat, funcții vizibile, aliasuri, ExecutionPolicy, LanguageMode etc.), apoi îl înregistrați cu Register-PSSessionConfiguration, unde puteți seta Executare ca acreditări și permisiuni (interfață SDDL sau GUI cu -ShowSecurityDescriptorUI).

Pentru o delegare sigură, expuneți doar ceea ce este necesar cu -VisibleCmdlets/-VisibleFunctions și dezactivați scripting-ul liber, dacă este cazul, cu Mod de limbăLimbă restricționată sau NoLanguage. Dacă părăsiți FullLanguage, cineva ar putea folosi un bloc de script pentru a invoca comenzi neexpuse, care, combinate cu RunAs, ar fi o gaurăProiectați aceste puncte finale cu atenție și documentați domeniul lor de aplicare.

Domenii, GPO-uri și Groupware

În AD puteți implementa Powershell Remoting la scară largă cu GPO: permiteți configurarea automată a listenerelor WinRM, setați serviciul pe Automatși creați excepția de firewall. Rețineți că obiectele GPO modifică setările, dar nu activează întotdeauna serviciul instantaneu; uneori trebuie să reporniți sau să forțați o actualizare gpdate.

Conținut exclusiv - Faceți clic aici  Cum să vă cunoașteți parola Gmail

În grupurile de lucru (non-domeniu), configurați Remoting cu Activați-PSRemoting, setați TrustedHosts pe client (winrm set winrm/config/client @{TrustedHosts=»host1,host2″}) și utilizați acreditări locale. Pentru HTTPS, puteți monta certificate autosemnate, deși este recomandat să utilizați un CA de încredere și validați numele pe care îl veți utiliza în -ComputerName în certificat (potrivire CN/SAN).

Cmdlet-uri cheie și sintaxă

O mână de comandouri acoperă 90% din scenariile zilnicePentru activare/dezactivare:

Enable-PSRemoting    
Disable-PSRemoting

Sesiune interactivă 1 la 1 și ieșire:

Enter-PSSession -ComputerName SEC504STUDENT 
Exit-PSSession

1 la mulți, cu paralelism și acreditări:

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

Sesiuni persistente și reutilizare:

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

Testare și WinRM Util:

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

Note practice despre firewall, rețea și porturi

Deschideți 5985/TCP pentru HTTP și 5986/TCP pentru HTTPS pe computerul țintă și pe orice firewall intermediarPe clienții Windows, Enable-PSRemoting creează reguli pentru profiluri de domeniu și private; pentru profilurile publice, este limitat la subrețeaua locală, cu excepția cazului în care modificați domeniul de aplicare cu Set-NetFirewallRule -RemoteAddress Any (o valoare pe care o puteți evalua în funcție de riscul dumneavoastră).

Dacă utilizați integrări SOAR/SIEM care rulează comenzi la distanță (de exemplu, din XSOAR), asigurați-vă că serverul are Rezoluție DNS către gazde, conectivitate la 5985/5986 și acreditări cu permisiuni locale suficiente. În unele cazuri, autentificarea NTLM/Basic poate necesita ajustări (de exemplu, utilizarea unui utilizator local în Basic cu SSL).

Parametrii Enable-PSRemoting (rezumat operațional)

-Confirm solicită confirmare înainte de execuție; -Forțează ignoră avertismentele și faceți modificările necesare; -SkipNetworkProfileCheck activează Remoting pe rețelele publice de clienți (limitată în mod implicit la subrețeaua locală); -WhatIf vă arată ce s-ar întâmpla fără aplicarea modificărilor. În plus, ca orice cmdlet standard, acceptă parametri comuni (-Verbose, -ErrorAction etc.).

Rețineți că „Activare” nu creează liste de ascultare sau certificate HTTPS pentru dvs.; dacă aveți nevoie de criptare end-to-end de la început și autentificare bazată pe certificate, configurați listener-ul HTTPS și validați CN/SAN în funcție de numele pe care îl veți utiliza în -ComputerName.

Comenzi utile pentru WinRM și PowerShell Remoting

unele articole esențiale pentru noptieră pentru zi cu zi:

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

Atunci când gestionați Windows la scară largă, Remoting vă permite să treceți de la o abordare „de la computer la computer” la o abordare declarativă și securizată. Prin combinarea sesiunilor persistente, a autentificării puternice (Kerberos/HTTPS), a endpoint-urilor restricționate și a urmelor clare pentru diagnosticare, câștigi viteză și control fără a sacrifica securitatea sau auditul. Dacă standardizați și activarea GPO și gestionați cazurile speciale (TrustedHosts, double hop, certificate), veți avea o platformă solidă la distanță pentru operațiunile zilnice și răspunsul la incidente.

malware invizibil
Articol asociat:
Cum să vă protejați PC-ul de programe malware invizibile precum XWorm și NotDoor