6Sep

Geek School: Învață să folosești Remoting în PowerShell

click fraud protection

Una dintre cele mai bune caracteristici oferite de PowerShell este capacitatea de a gestiona de la distanță serverele. Chiar vă permite să vă administrați o grămadă de ele dintr-o dată.

Asigurați-vă că citiți articolele anterioare din seria:

  • Învățați cum să automatizați Windows cu PowerShell
  • Învățați să utilizați cmdlets în PowerShell
  • Învățați cum să utilizați obiecte în PowerShell
  • Învățați formatarea, filtrarea și compararea în PowerShell

restul seriei toată săptămâna.

Ce este Remoting?

Gestionarea în vrac a serverelor dvs. poate fi obositoare și, dacă a trebuit să faceți o schimbare a configurației IIS pe 50 de servere web înainte, veți ști ce vreau să spun. Acestea sunt tipurile de situații în care PowerShell Remoting și abilitățile de scriere a limbii pot ajunge la salvare. Folosind HTTP sau HTTPS mai sigur, PowerShell Remoting vă permite să trimiteți comenzi la o mașină de la distanță din rețea. Apoi, mașina execută comenzile și trimite înapoi ieșirea, care este afișată pe ecran.

instagram viewer

Obțineți tehnicile

În centrul procesului de remodelare PowerShell se află un singur serviciu Windows, serviciul Windows Remote Management sau serviciul WinRM, așa cum a devenit cunoscut. Folosind WinRM, puteți seta una sau mai multe configurații de sesiuni( cunoscute și sub denumirea de puncte finale), care sunt în principiu fișiere care conțin informații despre experiența pe care doriți să o furnizați persoanei care se conectează la instanța PowerShell de la distanță.Mai precis, puteți utiliza fișiere de configurare a sesiunii pentru a defini cine poate și cine nu se poate conecta la instanță, ce cmdleturi și scripturi pot rula, precum și ce context de securitate trebuie să fie executat în cadrul sesiunii. Folosind serviciul WinRM, ați setat și "ascultători", care ascultă pentru cererile de intrare PowerShell. Acești "ascultători" pot fi HTTP sau HTTPS și pot fi legați de o singură adresă IP pe aparat. Când deschideți o conexiune PowerShell la o altă mașină( tehnic acest lucru se face folosind protocolul WS-MAN, care se bazează pe HTTP), conexiunea se leagă de unul dintre acești "ascultători"."Ascultătorii" sunt responsabili de trimiterea traficului către aplicația asociată fișierului de configurare a sesiunii;(în mod normal, PowerShell, dar puteți avea alte aplicații de găzduire dacă doriți), apoi execută comanda și alimentează rezultatele înapoi prin intermediul "ascultătorului" din rețea și înapoi pe mașină.

Arată-mă cum

Primul lucru pe care trebuie să-l faci este să activezi Remoting pe mașina la care vrei să te conectezi. Acest lucru se poate face executând următoarele:

Enable-PSRemoting

Va trebui să răspundeți apoi da la toate instrucțiunile. Când executați Enable-PSRemoting, se fac câteva modificări pe PC:

  • Serviciul WinRM pornește.
  • Serviciul WinRM se schimbă de la modul Manual de pornire la Automat.
  • Creează un ascultător HTTP care este legat de toate cardurile de rețea.
  • Creează, de asemenea, o excepție de tip firewall pentru protocolul WS-MAN.
  • Unele configurații de sesiuni implicite sunt create

Dacă executați Windows 7 și locația plăcii de rețea este setată la Public, activarea Remediere PowerShell va eșua. Pentru a rezolva aceasta, trebuie doar să comutați la locația de rețea Acasă sau Loc de muncă.Alternativ, puteți săriți verificarea rețelei utilizând următoarele:

Enable-PSRemoting -SkipNetworkProfileCheck

Cu toate acestea, vă recomandăm mai degrabă să modificați locația rețelei.

Există două modalități de conectare la o altă mașină utilizând PowerShell. Există metodele una până la una, care sunt foarte asemănătoare cu utilizarea SSH, și apoi există metoda de la una la mai multe.

Utilizarea unei sesiuni PowerShell

Primul mod de conectare la o mașină la distanță utilizând PowerShell utilizează ceva numit sesiune PowerShell. Pur și simplu a pune o sesiune vă permite să rulați comenzi pe mașina de la distanță într-o manieră interactivă mult la fel ca pe mașina dvs. Pentru a deschide o sesiune, tastați următoarele:

Enter-PSSession -ComputerName "Darlah"

Promptul va obține un prefix care semnifică mașina pe care executați cmdlet-urile împotriva.

De aici puteți trata cu adevărat solicitarea ca și cum ați fi așezat la mașina de la distanță.De exemplu, dacă doriți să vedeți toate fișierele de pe unitatea C: \, puteți face o simplă:

Get-ChildItem -Path C: \

Dacă veniți dintr-un fundal Linux, vă puteți gândi să utilizați această metodă de remoting ca alternativă la SSH pentru PowerShell.

Utilizarea Invoke-Command

Al doilea mod în care puteți utiliza PowerShell pe o mașină de la distanță este prin utilizarea Invoke-Command. Avantajul utilizării Invoke-Command vine din faptul că puteți executa aceeași comandă simultan pe mai multe mașini. După cum vă puteți imagina, acest lucru este deosebit de util atunci când doriți să faceți ceva de genul colectarea de jurnale de evenimente de pe serverele dvs. Invoke-Command urmărește următoarea sintaxă:

Invoke-Command -ComputerName Darlah, localhost -ScriptBlock{ Get-EventLog Application -Newest 2}

Deoarece comanda este executată în paralel pe toate mașinile, veți avea nevoie de un mod de a vedea ce PC arezultatul a venit de la. Puteți face acest lucru privindu-vă proprietatea PSComputerName.

Când utilizați Invoke-Command, nu mai aveți obiectele pe care le puteți aștepta în Conductă.Vedeți, pentru ca PowerShell să obțină informațiile de la aparatul la distanță înapoi în mașină, au nevoie de un fel de reprezentare a obiectelor pe care le-ați executat pe comanda pe ieșirile de la distanță.Aceste zile se pare că modalitatea aleasă de a reprezenta o structură de date ierarhică este de a utiliza XML, ceea ce înseamnă că atunci când emiteți o comandă utilizând Invoke-Command, rezultatele sunt serializate în XML înainte de a fi trimise înapoi la mașină.Odată ce se întorc la mașină, sunt deserializați înapoi într-un obiect;gata aici este că atunci când acestea sunt deserializate, toate metodele, cu excepția metodei ToString() , pe care obiectul le-a îndepărtat, sunt îndepărtate.

Notă: Există câteva excepții de la această regulă, de exemplu cele mai multe tipuri primitive ca întregi pot fi deserializate cu metodele incluse. Există, de asemenea, un proces numit Rehidratare în cazul în care unele metode pot fi adăugate înapoi la obiecte deserializate. Deci, fii atent și amintesc că Get-Member este prietenul tău.

Temă de acasă

  • Citiți secretele PowerShell Remoting ebook de Don Jones.