Geek School Aflați cum să utilizați Remoting în PowerShell
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:
- Aflați cum să automatizați Windows cu PowerShell
- Învățarea de a folosi Cmdlets în PowerShell
- Învățați cum să utilizați obiecte în PowerShell
- Formatul de învățare, filtrarea și compararea în PowerShell
Și stați pe toată săptămâna pentru restul seriei.
Ce este Remoting?
Gestionarea în masă 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.
Să mergem tehnic
Miezul sistemului PowerShell Remoting constă într-un singur serviciu Windows, 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, de asemenea, configuraț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 de 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; aplicația (î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 "ascultător" în rețea și înapoi în mașină.
Arată-mi cum
Primul lucru pe care trebuie să-l faceți este să activați Remoting-ul de pe mașina la care doriți să vă conectați. Acest lucru se poate face executând următoarele:
Activați-PSRemoting
Va trebui să răspundeți apoi la toate întrebările. 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 pornire la Automat.
- Creează un ascultător HTTP care este legat de toate cardurile de rețea.
- De asemenea, creează o excepție pentru firewall pentru protocolul WS-MAN.
- Unele configurații de sesiuni implicite sunt create
Dacă executați Windows 7 și locația cărții de rețea este setată la Public, activarea Remediere PowerShell va eșua. Pentru ao remedia, pur și simplu treceți la locația de rețea Home sau Work. Alternativ, puteți trece peste 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ă metoda una-o singură metodă, care este foarte asemănătoare cu utilizarea SSH, și apoi există metoda una de la multe.
Folosind o sesiune PowerShell
Primul mod de conectare la o mașină la distanță folosind PowerShell utilizează ceva numit sesiune PowerShell. Pur și simplu a pus o sesiune vă permite să rulați comenzi pe o mașină de la distanță într-o manieră interactivă 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 în care executați cmdlet-urile.
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ă folosiți această metodă la o metodă de remoting ca alternativă la PowerShell pentru SSH.
Utilizarea Invoke-Command
Al doilea mod în care puteți utiliza PowerShell pe o mașină de la distanță este utilizarea Invoke-Command. Avantajul utilizării Invoke-Command vine de la faptul că puteți executa aceeași comanda pe mai multe mașini simultan. 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 urmează următoarea sintaxă:
Invoke-Command -ComputerName Darlah, localhost -ScriptBlock Aplicație Get-EventLog -Newest 2
Întrucât comanda este executată în paralel pe toate mașinile, veți avea nevoie de un mod de a vedea de la care PC a rezultat un rezultat. Puteți face acest lucru privindu-vă proprietatea PSComputerName.
Când folosiț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ță în mașină, au nevoie de un fel de reprezentare a obiectelor pe care comanda le-ați executat pe ieșirile de la distanță. Aceste zile se pare că modul ales de a reprezenta o structură de date ierarhică este de a utiliza XML, ceea ce înseamnă că atunci când emiteți o comandă folosind 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-au îndepărtat de ea.
Notă: Există câteva excepții de la această regulă, de exemplu cele mai multe tipuri primitive precum întregi pot fi deserializate cu metodele incluse. Există, de asemenea, un proces numit Rehidratare, unde unele metode pot fi adăugate înapoi la obiecte deserializate. Așa că fiți atenți și amintiți-vă că Get-Member este prietenul tău.
Teme pentru acasă
- Citiți Secretele PowerShell Remoting ebook de Don Jones.