6Sep
Viena no labākajām iespējām PowerShell piedāvā ir iespēja attālināti vadīt savus serverus. Tas pat ļauj vienlaikus pārvaldīt to ķekarus.
Noteikti izlasiet iepriekšējos sērijas rakstus:
- Uzziniet, kā automatizēt Windows ar PowerShell
- Mācīties lietot komandas PowerShell
- Mācīšanās lietot objektus PowerShell
- Mācību formēšana, filtrēšana un salīdzināšana PowerShell
.pārējā sērija visu nedēļu.
Kas ir Remoting?
Liela apjoma serveru pārvaldība var būt apnicīga, un, ja jums agrāk bija jāizdara IIS konfigurācijas izmaiņas 50 tīmekļa serverī, jūs zināt, ko es domāju. Tie ir situācijas, kad PowerShell Remoting un valodas skriptu spējas var nonākt glābšanā.Izmantojot HTTP vai drošāku HTTPS, PowerShell Remoting ļauj jums nosūtīt komandas uz attālināto mašīnu jūsu tīklā.Pēc tam mašīna izpilda komandas un nosūta izeju atpakaļ uz jums, kas savukārt tiek parādīta ekrānā.
Let's Get Technical
No PowerShell Remoting pamatā ir viens Windows Serviss, Windows Remote Management vai WinRM pakalpojums, jo tas ir kļuvis zināms. Izmantojot WinRM, jūs varat iestatīt vienu vai vairākas sesijas konfigurācijas( zināmas arī kā beigu punkti), kas būtībā ir faili, kas satur informāciju par pieredzi, kuru vēlaties sniegt personai, kura savieno jūsu attālo PowerShell gadījumu. Konkrētāk, jūs varat izmantot sesijas konfigurācijas failus, lai noteiktu, kas var un kas nevar izveidot savienojumu ar konkrēto gadījumu, kādus cmdletus un skriptus, ko tie var palaist, kā arī kādam drošības kontekstam sesija ir jāiedarbina. Izmantojot WinRM pakalpojumu, jūs arī iestatāt "klausītāji", kas klausās ienākošos PowerShell pieprasījumus.Šie "klausītāji" var būt vai nu HTTP, vai HTTPS, un jūsu ierīcē var piesaistīt vienu IP adresi. Atverot PowerShell savienojumu ar citu mašīnu( tehniski tas tiek darīts, izmantojot WS-MAN protokolu, kas balstīts uz HTTP), savienojums tiek saistīts ar vienu no šiem "klausītājiem".Tad "klausītāji" ir atbildīgi par datplūsmas nosūtīšanu uz pieteikumu, kas saistīts ar atbilstošo sesijas konfigurācijas failu;lietojumprogrammu( parasti PowerShell, bet, ja vēlaties, var būt arī citas hostinga lietojumprogrammas), tad palaiž komandu un pārnes rezultātus atpakaļ caur "klausītāju" visā tīklā un atpakaļ uz jūsu ierīci.
Parādiet mani Kā
Pirmā lieta, kas jums jādara, ir iespējot Remoting tajā mašīna, ar kuru vēlaties izveidot savienojumu. To var izdarīt, palaižot sekojošo:
Iespējot-PSRemoting
Jums būs jāatbild uz "jā" visiem uzvedņiem. Kad palaižat Enable-PSRemoting, datorā tiek veiktas dažas izmaiņas:
- Tiek startēts WinRM pakalpojums.
- WinRM pakalpojums mainās no manuālā ieslēgšanās režīma uz automātisko.
- Tas rada HTTP klausītāju, kas ir saistīts ar visām jūsu tīkla kartes.
- Tas arī rada WS-MAN protokola ārkārtas ugunsmūra izņēmumu.
- Daži noklusējuma sesijas konfigurācijas tiek izveidotas
Ja jūs izmantojat Windows 7 un tīkla kartes atrašanās vieta ir iestatīta uz Publiska, PowerShell Remoting iespējošana neizdosies. Lai to novērstu, vienkārši pārslēdzieties uz mājas vai darba tīkla atrašanās vietu. Varat arī izlaist tīkla pārbaudi, izmantojot:
Enable-PSRemoting -SkipNetworkProfileCheck
Tomēr mēs iesakām diezgan mainīt tīkla atrašanās vietu.
Ir divi veidi, kā pieslēgties citai ierīcei, izmantojot PowerShell. Ir viena pret vienu metodi, kas ir ļoti līdzīga SSH lietošanai, un tad ir viena no daudzām metodēm.
Izmantojot PowerShell sesiju
Pirmais veids, kā pieslēgties attālajai mašīnai, izmantojot PowerShell, izmanto to, ko sauc par PowerShell sesiju. Vienkārši ielieciet sesiju, ļaujot interaktīvā veidā palaist komandas tālvadības iekārtā, tāpat kā jūs savā datorā.Lai atvērtu sesiju, vienkārši ierakstiet šādu:
Enter-PSSession -ComputerName "Darlah"
Uzvedne iegūst prefiksu, kas nozīmē aparātu, ka jūs izmantojat cmdlet pret.
No šejienes jūs varat patiešām izturēties pret ātru, it kā jūs sēdētu pie tālvadības iekārtas. Piemēram, ja jūs vēlaties redzēt visus failus C: \ diskā, jūs varat to izdarīt vienkārši:
Get-ChildItem -Path C: \
Ja jūs nākat no Linux fona, jūs varat iedomāties izmantot šo vienu uz vienu atkārtotas izmantošanas metodi kā PowerShell alternatīvu SSH.
Izmantojot Invoke-Command
Otrs veids, kā jūs varat izmantot PowerShell attālajā datorā, ir, izmantojot Invoke-Command. Priekšrocība izmantot Invoke-Command nāk no fakta, ka jūs varat izpildīt to pašu komandu vairākām mašīnām vienlaicīgi. Kā jūs varat iedomāties, tas ir īpaši noderīgi, ja vēlaties kaut ko darīt, piemēram, savākt serveru notikumu žurnālus. Invoke-Command izpilda šādu sintaksi:
Invoke-Command -ComputerName Darlah, localhost -ScriptBlock{ Get-EventLog Application -Newest 2}
Tā kā komanda tiek izpildīta paralēli visās mašīnās, jums būs nepieciešams zināms veids, kā redzēt, kurš datoradots rezultāts. To var izdarīt, aplūkojot īpašumu PSComputerName.
Ja jūs izmantojat Invoke-Command, jums vairs nav objektu, ko jūs varētu sagaidīt Pipeline. Redzējāt, lai PowerShell varētu saņemt informāciju no attālinātās ierīces atpakaļ uz jūsu ierīci, viņiem ir nepieciešams veids, kā pārstāvēt objektus, kurus komanda izpilda uz attālo iekārtu izejām.Šodien šķiet, ka izvēlētais veids, kā pārstāvēt hierarhisku datu struktūru, ir XML izmantošana, tas nozīmē, ka, izsniedzot komandu, izmantojot komandu Invoke-Command, rezultāti tiek sērijizēti XML sistēmā, pirms tiek nosūtīti atpakaļ uz jūsu datoru. Kad viņi atgriežas pie savas mašīnas, tie tiek deserializēti atpakaļ objektā;Šajā gadījumā gotcha ir tas, ka tad, kad tie tiek deserializēti, visas metodes, izņemot ToString() metodi, ka objekts tika noņemts no tā.
Piezīme. Šim noteikumam ir daži izņēmumi, piemēram, lielāko daļu primitīvu veidu, piemēram, veseli skaitļi, var deserializēt ar iekļautajām metodēm. Ir arī process, ko sauc par rehidratāciju, kur dažas metodes var pievienot atpakaļ deserializētiem objektiem. Tātad, esi uzmanīgs un atcerieties, Get-loceklis ir tavs draugs.
Mājasdarbs
- Lasiet Don Jonesa PowerShell Remoting e-grāmatas noslēpumus.