If-Koubou

Škola Geek: Saznajte kako koristiti Remoting u PowerShellu

Škola Geek: Saznajte kako koristiti Remoting u PowerShellu (Kako da)

Jedna od najboljih značajki PowerShell nudi je mogućnost daljinskog upravljanja poslužiteljima. Čak vam omogućuje i upravljanje njima odjednom.

Obavezno pročitajte prethodne članke serije:

  • Saznajte kako automatizirati sustav Windows pomoću programa PowerShell
  • Učenje pomoću Cmdletsa u PowerShellu
  • Učenje kako koristiti objekte u PowerShellu
  • Oblikovanje učenja, filtriranje i uspoređivanje u PowerShellu

I ostanite u tijeku cijele serije cijeli tjedan.

Što je Remoting?

Skupno upravljanje svojim poslužiteljima može biti dosadan i ako ste prije morali napraviti izmjenu konfiguracije IIS-a na 50 web poslužitelja, znat ćete što mislim. Ovo su vrste situacija kada PowerShell Remoting i jezične skriptne sposobnosti mogu doći do spašavanja. Pomoću HTTP-a ili sigurnijeg HTTPS-a PowerShell Remoting omogućuje slanje naredbi udaljenom računalu na vašoj mreži. Stroj onda pokreće naredbe i šalje izlaz natrag vama, koji je opet prikazan na vašem zaslonu.

Let's Get tehnički

U jezgri PowerShell Remoting leži jedna Windows servis, Windows Remote Management ili WinRM servis, kao što je poznato. Pomoću programa WinRM možete postaviti jednu ili više konfiguracija sesije (također poznate kao krajnje točke) koje su u osnovi datoteke koje sadrže informacije o iskustvu koje želite pružiti osobi koja se povezuje s instancom udaljenog PowerShell. Konkretnije, možete koristiti datoteke za konfiguraciju sesije kako biste definirali tko se može i tko se ne može povezati s instancom, koji se cmdleti i skripte mogu izvoditi, kao i koji sigurnosni kontekst mora biti pokrenuta sesija. Pomoću WinRM servisa postavljate i "slušatelje" koji slušaju dolazne zahtjeve programa PowerShell. Ovi "slušatelji" mogu biti HTTP ili HTTPS i mogu biti vezani za jednu IP adresu na vašem računalu. Kada otvorite PowerShell vezu na drugi stroj (tehnički se to radi pomoću WS-MAN protokola koji se temelji na HTTP-u), veza se veže za jednog od tih "slušatelja". "Slušatelji" su tada zaduženi za slanje prometa na aplikaciju povezanu s odgovarajućom datotekom konfiguracije sesija; aplikaciju (normalno PowerShell, ali možete imati druge hosting aplikacije ako to želite), zatim pokrenite naredbu i učitajte rezultate natrag kroz "slušatelja" preko mreže i natrag na vaš stroj.

Pokaži mi kako

Prva stvar koju trebate učiniti jest omogućiti Remoting na Stroj za koji se želite povezati. To se može učiniti tako da pokrenete sljedeće:

Omogućiti-PSRemoting

Trebat ćete odgovoriti na sva pitanja. Kada pokrenete Enable-PSRemoting, na računalu se izvršavaju nekoliko promjena:

  • Pokreće se WinRM usluga.
  • Usluga WinRM se mijenja iz ručnog načina pokretanja u Automatski.
  • Stvara HTTP slušatelj koji je vezan za sve vaše mrežne kartice.
  • Također stvara izlaz za ulaz u vatrozide za WS-MAN protokol.
  • Izrađene su neke zadane konfiguracije sesije

Ako koristite sustav Windows 7 i lokacija vaše mrežne kartice je postavljena na Javno, omogućit će se da će PowerShell Remoting uspjeti. Da biste je popravili, jednostavno prijeđite na lokaciju Doma ili radne mreže. Alternativno, mrežnu provjeru možete preskočiti pomoću sljedećeg:

Omogući-PSRemoting -SkipNetworkProfileCheck

Međutim, preporučujemo vam da izmijenite lokaciju mreže.

Postoje dva načina povezivanja na drugi stroj koristeći PowerShell. Postoji metoda od jedne do jedne, koja je vrlo slična korištenju SSH, a zatim postoji jedna na mnoge metode.

Korištenje PowerShell sesije

Prvi način povezivanja s udaljenim računalom koristeći PowerShell koristi nešto što se naziva PowerShell Session. Jednostavno postavljanje sesije omogućuje vam pokretanje naredbi na udaljenom računalu na interaktivan način jednako kao i na vašem računalu. Da biste otvorili sesiju, jednostavno upišite sljedeće:

Enter-PSSession -ComputerName "Darlah"

Zahtjev će dobiti prefiks koji označava stroj da pokrenete cmdlete.

Odavde možete zaista tretirati brzinu kao da sjedite na udaljenom stroju. Na primjer, ako želite vidjeti sve datoteke na C: \ pogonu, možete učiniti jednostavnu:

Get-ChildItem -Path C: \

Ako dolazite iz Linux pozadine, možete misliti o korištenju ove jedne do jedne metode udaljenosti kao PowerShell alternative SSH-u.

Upotreba Invoke-Command

Na drugi način možete koristiti PowerShell na udaljenom računalu pomoću Invoke-Command. Prednost korištenja Invoke-Command proizlazi iz činjenice da istu naredbu možete istovremeno izvršavati na više strojeva. Kao što možete zamisliti, to je osobito korisno kada želite učiniti nešto poput skupljanja dnevnika događaja s vaših poslužitelja. Invoke-Command slijedi sljedeću sintaksu:

Invoke-Command -ComputerName Darlah, localhost -ScriptBlock Get-EventLog Application-Najnoviji 2

Budući da se naredba izvršava paralelno na svim strojevima, trebat će vam neki način da vidite koji računalo dolazi od datog rezultata. To možete učiniti tako da pogledate svojstvo PSComputerName.

Kada koristite Invoke-Command, više nemate predmete koje očekujete u Cjevovodu. Vidiš, kako bi PowerShell mogao dobiti informacije s udaljenog stroja natrag na vaš stroj, oni trebaju neki način predstavljanja objekata na kojima je naredba koju ste pokrenuli na daljinškim uređajima. Ovih dana izgleda da je odabrani način predstavljanja hijerarhijske strukture podataka upotreba XML-a, što znači da kada izdajete naredbu pomoću Invoke-Command, rezultati se prvo serijski šalju u XML prije nego što se vrate na vaš stroj.Kad se vrate na vaš stroj, oni su deserializirani natrag u objekt; ovdje je da je kad su deserializirani, sve metode, osim metode ToString (), koje je objekt imao, uklonjene su od njega.

Napomena: Postoje neke iznimke od ovog pravila, na primjer najprimitivnije vrste kao što su cijeli brojevi mogu biti deserializirani s uključenim metodama. Tu je i proces nazvan Rehydration gdje se neke metode mogu dodati natrag u deserializirane objekte. Stoga budite oprezni i zapamtite da je Get-Member vaš prijatelj.

Domaća zadaća

  • Pročitajte tajne PowerShell Remoting knjige Don Jonesa.