Viena no labākajām funkcijām PowerShell piedāvā iespēju attālināti vadīt savus serverus. Tas pat ļauj vienlaikus pārvaldīt to ķekarus.
Noteikti izlasiet iepriekšējos sērijas rakstus:
Un visu nedēļu pieskarieties atlikušajām sērijām.
Jūsu serveru lielapjoma 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 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ā.
PowerShell Remoting pamatā ir viens Windows pakalpojums, 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 kam nevar izveidot savienojumu ar konkrēto gadījumu, kādus cmdletus un skriptus, kurus tos var darbināt, kā arī kādam drošības kontekstam sesija jāuztur. 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.
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:
Ieslēgt-PSRemoting
Jums būs jāatbild uz "jā" visiem uzvedņiem. Kad palaižat Enable-PSRemoting, datorā tiek veiktas dažas izmaiņas:
Ja izmantojat operētājsistēmu 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 sekojošo:
Ieslēgt-PSRemoting -SkipNetworkProfileCheck
Tomēr mēs iesakām drīzāk mainīt tīkla atrašanās vietu.
Izmantojot PowerShell, ir iespējams izveidot savienojumu ar citu ierīci. Ir viena pret vienu metodi, kas ir ļoti līdzīga SSH lietošanai, un tad ir viena no daudzām metodēm.
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 saņem prefiksu, kas nozīmē aparātu, ka jūs izmantojat cmdlet pret.
No šejienes jūs patiešām varat izturēties pret ātru darbību, it kā jūs sēdētu attālajā mašīnā. Piemēram, ja jūs vēlaties redzēt visus failus C: \ diskā, jūs varat to izdarīt vienkārši:
Get-ChildItem-ceļš 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.
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:
Atsauce uz komandu -ComputerName Darlah, localhost -ScriptBlock Get-EventLog Pieteikums -Newest 2
Tā kā komanda tiek izpildīta paralēli visās iekārtās, jums būs nepieciešams zināms veids, kā noskaidrot, kurš no datoriem ir iegūts no konkrētā rezultāta. To var izdarīt, aplūkojot īpašumu PSComputerName.
Kad 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, tiem ir nepieciešams veids, kā pārstāvēt objektus, kurus komanda izpilda uz attālinātās iekārtas 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ērijalizēti XML sistēmā, pirms tie 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īvo tipu, 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.