6Sep

Škola Geek: Saznajte kako koristiti Remoting u PowerShellu

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

Obavezno pročitajte prethodne članke u seriji:

  • Saznajte kako automatizirati sustav Windows pomoću PowerShell
  • Učiti pomoću Cmdletsa u PowerShellu
  • Učiti kako koristiti objekte u PowerShellu
  • Učenje, filtriranje i usporedbe u PowerShell

I ostati ugođen zaostatak serije cijeli tjedan.

Što je udaljeno?

Skupno upravljanje svojim poslužiteljima može biti dosadan i ako ste prije morali napraviti promjenu 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.

Nabavimo tehnički

U središtu PowerShell Remotinga leži jedna Windows servis, Windows Remote Management ili WinRM servis, kao što je poznato. Pomoću WinRM-a 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. Ti "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 sesije;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 je omogućiti Remoting na Stroj za koji se želite povezati. To se može učiniti tako da pokrenete sljedeće:

Enable-PSRemoting

Trebat ćete zatim odgovoriti da na sve upitnike. Kada pokrenete Enable-PSRemoting, nekoliko se promjena izvršava na vašem računalu:

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

Ako koristite sustav Windows 7 i položaj vaše mrežne kartice je postavljen na Javno, omogućit će se da će Removiranje programa PowerShell 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:

Enable-PSRemoting -SkipNetworkProfileCheck

Međutim, preporučujemo vam da promijenite svoju mrežnu lokaciju.

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 predbroj koji označava stroj s kojim radite cmdlete.

Odavde možete stvarno tretirati prompt 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 alternativa PowerShellu SSH-u.

Korištenje Invoke-Command

Drugi način na koji možete koristiti PowerShell na udaljenom računalu je 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 -newest 2}

Budući da je naredba izvršena paralelno na svim strojevima, trebat će vam neki način da vidite koje računalodobio je rezultat. To možete učiniti tako da pogledate svojstvo PSComputerName.

Kad 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 izlaznoj udaljenosti. Ovih dana čini se 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 šalju u XML prije nego što budu vraćeni na vaš stroj. Kad se vrate na vaš stroj, oni su deserializirani natrag u objekt;ovdje je da je kada su deserializirani, sve metode, osim metode ToString() , koje je objekt bio oduzete od njega.

Napomena: Postoje neke iznimke od ovog pravila, na primjer najprimitivnije vrste poput cijeli brojevi mogu biti deserializirane 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ći

  • Pročitajte tajne PowerShell Remoting knjige Don Jonesa.