Geek School Saznajte kako koristiti daljinski u PowerShell
Jedna od najboljih značajki koje nudi PowerShell je mogućnost daljinskog upravljanja poslužiteljima. Čak vam omogućuje i upravljanje hrpom odjednom.
Svakako pročitajte prethodne članke iz serije:
- Saznajte kako automatizirati sustav Windows pomoću programa PowerShell
- Učenje korištenja Cmdletova u PowerShell-u
- Učenje korištenja objekata u programu PowerShell
- Učenje oblikovanja, filtriranja i uspoređivanja u programu PowerShell
Ostanite u tijeku cijeli tjedan.
Što je Remoting?
Skupno upravljanje poslužiteljima može biti zamorno, a ako ste morali promijeniti konfiguraciju IIS-a na 50 web-poslužitelja prije, znat ćete što mislim. To su vrste situacija kada PowerShell Remoting i sposobnosti skriptiranja jezika mogu doći u pomoć. Koristeći HTTP ili sigurniji HTTPS, PowerShell Remoting omogućuje slanje naredbi udaljenom računalu na vašoj mreži. Uređaj zatim pokreće naredbe i šalje vam natrag izlaz, koji se zatim prikazuje na zaslonu.
Let's Get Technical
U srži PowerShell Remotinga leži jedna usluga sustava Windows, Windows Remote Management ili WinRM usluga, budući da je postala poznata. Koristeći WinRM, možete postaviti jednu ili više konfiguracija sesije (također poznatih kao krajnje točke), koje su u osnovi datoteke koje sadrže informacije o iskustvu koje želite pružiti osobi koja se povezuje s udaljenom instancom PowerShell. Konkretnije, možete koristiti datoteke konfiguracije sesije da biste definirali tko se može i tko ne može spojiti na instancu, koje cmdlet komande i skripte mogu izvoditi, kao i sigurnosni kontekst u kojem se sesija mora izvoditi. Pomoću usluge WinRM možete postaviti i "slušatelje" koji slušaju dolazne zahtjeve za 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 s drugim strojem (tehnički se to radi pomoću WS-MAN protokola koji se temelji na HTTP-u), veza se povezuje s jednim od tih "slušatelja". "Slušatelji" su tada zaduženi za slanje prometa aplikaciji koja je povezana s odgovarajućom konfiguracijskom datotekom sesije; aplikacija (obično PowerShell, ali možete imati i druge aplikacije za hosting ako želite) pokreće naredbu i šalje rezultate natrag kroz "slušatelja" preko mreže i natrag na vaš stroj.
Pokaži mi kako
Prva stvar koju ćete trebati učiniti jest omogućiti daljinski rad na uređaju s kojim se želite povezati. To se može postići pokretanjem sljedećeg:
Omogućiti-PSRemoting
Morat ćete zatim odgovoriti s da na sve upute. Kada pokrenete Enable-PSRemoting, na računalu se unosi nekoliko promjena:
- Pokreće se WinRM usluga.
- Usluga WinRM prelazi iz ručnog načina pokretanja u automatski.
- To stvara HTTP slušatelja koji je vezan za sve vaše mrežne kartice.
- Također stvara iznimku ulaznog firewalla za WS-MAN protokol.
- Stvaraju se neke zadane konfiguracije sesije
Ako koristite sustav Windows 7 i gdje je lokacija vaše mrežne kartice postavljena na Javno, omogućivanje značajke PowerShell Remoting neće uspjeti. Da biste to popravili, jednostavno prijeđite na mrežnu lokaciju za početnu ili poslovnu mrežu. Alternativno, možete preskočiti provjeru mreže pomoću sljedećeg:
Omogući-PSRemoting -SkipNetworkProfileCheck
Međutim, preporučujemo da radije promijenite mrežnu lokaciju.
Postoje dva načina spajanja na drugi stroj pomoću PowerShell-a. Tu je metoda jedan na jedan, koja je vrlo slična korištenju SSH-a, a tu je i metoda s jednom na mnogo.
Korištenje sesije PowerShell
Prvi način povezivanja s udaljenim računalom pomoću programa PowerShell je nešto što se naziva PowerShell sesija. Jednostavno rečeno, sesija vam omogućuje da pokrenete naredbe na udaljenom stroju na interaktivan način mnogo isto kao što biste to učinili na svom računalu. Da biste otvorili sesiju, jednostavno upišite sljedeće:
Enter-PSSession-Naziv računala "Darlah"
Odzivnik će dobiti prefiks koji označava uređaj protiv kojeg ste pokrenuli cmdlet komande.
Odavde stvarno možete tretirati prompt kao da sjedite na udaljenom računalu. Na primjer, ako želite vidjeti sve datoteke na disku C: možete napraviti jednostavan:
Get-ChildItem -Path C: \ t
Ako dolazite iz pozadine Linuxa, možete zamisliti da ovu metodu upotrijebite za jedan od načina udaljenog povezivanja kao alternativu PowerShell SSH-u.
Koristeći Invoke-Command
Drugi način na koji možete koristiti PowerShell na udaljenom računalu jest upotreba Invoke-Command. Prednost upotrebe Invoke-Command dolazi iz činjenice da istu naredbu možete izvršiti na više računala istovremeno. Kao što možete zamisliti, to je osobito korisno kada želite napraviti nešto poput skupljanja dnevnika događaja sa svojih poslužitelja. Invoke-Command slijedi sljedeću sintaksu:
Invoke-Command -ComputerName Darlah, localhost -ScriptBlock Aplikacija Get-EventLog -Newest 2
Budući da se naredba izvršava paralelno na svim strojevima, trebat će vam neki način da vidite koje je računalo određeni rezultat došao. To možete učiniti ako pogledate svojstvo PSComputerName.
Kada koristite Invoke-Command, više nemate objekte koje možete očekivati u cjevovodu. Vidite, da bi PowerShell podatke iz udaljenog stroja vratio na vaš stroj, potreban im je način predstavljanja objekata koje je naredba izvršila na izlazima udaljenog stroja. Ovih dana se čini da je odabrani način predstavljanja hijerarhijske strukture podataka korištenje XML-a, što znači da kada izdate naredbu pomoću Invoke-Command, rezultati se prvo serijski prenose u XML prije slanja natrag na vaš stroj. Nakon što se vrate na vaš stroj, oni se deseriziraju natrag u objekt; gotcha ovdje je da kada su deserialized, sve metode, osim ToString () metoda, da je objekt imao je oduzeta od njega.
Napomena: Postoji nekoliko iznimaka od ovog pravila, na primjer većina primitivnih tipova kao što su cijeli brojevi mogu se deserizirati s uključenim metodama. Tu je i proces koji se zove Rehidracija, gdje se neke metode mogu vratiti na deserijalizirane objekte. Zato budite oprezni i zapamtite da je Get-Member vaš prijatelj.
Domaća zadaća
- Pročitajte Tajne PowerShell Remonta ebook by Don Jones.