rularea comenzilor local pe computerele la distanță este o sarcină comună pe care mulți administratori IT trebuie să o facă în fiecare zi. Iată cum puteți face asta în PowerShell.uneori nu este suficient să folosiți DCOM, RPC și alte protocoale la distanță pentru a efectua sarcini pe computere la distanță. Pentru a rula comenzi pe computerul de la distanță necesită o abordare diferită. Un administrator trebuie să creeze o sesiune de un fel și să trimită comenzi în rețea, care sunt apoi consumate de computerul de la distanță.,
deoarece acesta este un articol despre PowerShell și nu despre telnet (nu utilizați telnet, nu-i așa?), vom rămâne cu o tehnologie numită PowerShell Remoting. PowerShell Remoting este o caracteristică a PowerShell care a fost introdusă în Windows PowerShell v2. Permite utilizatorilor să deschidă, să gestioneze și să închidă sesiuni pe computere la distanță și să interacționeze cu ei la fel ca și cum ar sta pe consola locală.,pentru a stabili o sesiune numită PSSession cu PowerShell, este necesar ca computerul de la distanță să aibă PowerShell Remoting activat și să asculte pe portul 5985 (HTTP) sau 5986 (HTTPS) cu toate excepțiile obișnuite de firewall. În funcție de modul în care utilizatorul dorește să stabilească conexiunea, poate fi necesară și o anumită configurație a clientului. Există o mulțime de configurații diferite în care un utilizator se poate găsi, dar pentru acest articol, vom presupune că computerele locale și la distanță sunt ambele în același domeniu Active Directory., În acest context, PowerShell Remoting va folosi Kerberos pentru a se autentifica și nu va trebui să trecem acreditările alternative la comenzi.
presupunând că computerul la distanță are PowerShell Remoting activat, să încercăm mai întâi să rulăm comenzi simple pe un computer la distanță. Ca un test pentru a vă asigura că codul rulează pe computerul de la distanță, îmi place întotdeauna să folosesc comanda hostname care returnează numele computerului.
există două moduri în care putem rula comenzi la distanță prin PowerShell Remoting; putem emite comenzi interactiv sau non-interactiv., Interactiv înseamnă că va trebui să fie la computerul nostru pentru a rula comenzile fizic. Să începem prin a arăta un exemplu non-interactiv.
pentru a rula comenzi la distanță non-interactiv, folosim comanda Invoke-Command. Această comandă are un parametru ComputerName care ne permite să specificăm un computer pentru a rula pe comandă. Avem, de asemenea, un parametru ScriptBlock în care vom încapsula comenzile pe care intenționăm să le rulăm pe computerul de la distanță. Puteți vedea mai jos cum funcționează acest lucru în acțiune. Rulez comanda hostname local pe computerul meu și apoi o rulez de la distanță cu comanda Invoke., Puteți vedea că returnează rezultate diferite.
PS C:\> hostname
MACWINVM
PS C:\> Invoke-Command -ComputerName SRV1 -ScriptBlock {hostname}
SRV1
ați rulat acum prima comandă de la distanță! Orice poate intra în parametrul ScriptBlock. Mai jos, creez o declarație if/then în interiorul $scriptblock ca test pentru a vă asigura că codul rulează de la distanță.
este posibil să nu fi observat, dar comanda Invoke-Command a creat o sesiune ușoară în fundal pentru a rula acea comandă și când comanda a fost finalizată, a rupt-o. Acest lucru este mai evident atunci când alegeți să executați comenzi interactiv folosind comanda Enter-PSSession.,
comanda Enter-PSSession vă permite să vă conectați la o sesiune la distanță, să executați comenzi, să obțineți ieșire și să lucrați la fel ca și cum ați introduce comenzi în consola locală. Pentru a face acest lucru, totuși, mai întâi trebuie să stabiliți o sesiune. O modalitate de a face acest lucru este de a utiliza parametrul ComputerName. Observați mai jos că am intrat într-o sesiune la distanță și am un nou prompt PowerShell care este pregătit de numele computerului în care rulează sesiunea.
PS C:\> Enter-PSSession -ComputerName SRV1
: PS C:\>
În acest moment, pot rula orice comenzi aș dori și vor fi executate pe computerul de la distanță., Nu trebuie să folosim comanda Invoke pentru a face acest lucru. Pur și simplu rulăm comenzile așa cum sunt. Când terminăm, trebuie să închidem sesiunea. Pentru a face acest lucru, folosim cuvântul cheie exit care ne deconectează de la sesiune și îl închide.
puteți vedea mai jos odată ce tastăm exit și apăsăm Enter, suntem imediat readuși la consola noastră locală.
: PS C:\>exit
PS C:\>
PowerShell Remoting este o modalitate convenabilă de a executa comenzi pe computere la distanță., Atâta timp cât computerul de la distanță este configurat pentru PowerShell Remoting, care este o configurare unică, există o configurație minimă, dacă există, necesară pe computerul client pentru ca aceasta să funcționeze. Mai ales, în cazul în care într-un mediu Active Directory, procesul este fără sudură și o modalitate foarte bună de a preveni având să sneakernet tot în jurul biroului doar pentru a rula script-uri și comenzi pe toate computerele!