6Sep

Geek School: Naučite se uporabljati Remoting v PowerShell

Ena izmed najboljših lastnosti PowerShell ponudbe je možnost, da upravljate svoje strežnike na daljavo. Omogoča vam tudi, da jih obvladujete naenkrat.

Prosimo, da preberete prejšnje članke v seriji:

  • Več o tem, kako avtomatizirati Windows z PowerShellom
  • Učenje za uporabo Cmdlets v PowerShellu
  • Učenje Uporaba objektov v PowerShellu
  • Oblikovanje, filtriranje in primerjanje učenja v programu PowerShell

In ostanejo nastavljeni zapreostanek serije ves teden.

Kaj je Remoting?

Množično upravljanje strežnikov je lahko dolgočasno, in če bi morali prej opraviti konfiguracijo IIS konfiguracije na 50 spletnih strežnikov, boste vedeli, kaj mislim. To so vrste situacij, ko lahko PowerShell Remoting in jezične skriptne sposobnosti rešijo. Uporaba HTTP-ja ali varnejših HTTPS-jev, PowerShell Remoting vam omogoča pošiljanje ukazov na oddaljeni računalnik v omrežju. Naprava nato zažene ukaze in pošlje izhod nazaj k vam, kar se prikaže na zaslonu.

Vzemimo tehnično

V jedru PowerShell Remoting leži ena služba Windows, storitev Windows Remote Management ali WinRM, saj je znana. Z uporabo WinRM lahko nastavite eno ali več konfiguracij sej( znanih tudi kot končne točke), ki so v bistvu datoteke, ki vsebujejo informacije o izkušnji, ki jo želite posredovati osebi, ki se povezuje z vašim primarnim PowerShell-jevim primerkom. Natančneje, lahko uporabite konfiguracijske datoteke v seji, da določite, kdo in kdo se ne more povezati z instanco, kakšne cmdlete in skripte, ki jih lahko izvajajo, ter kakšen varnostni kontekst je treba izvajati v seji. S storitvijo WinRM ste nastavili tudi »poslušalce«, ki poslušajo za dohodne zahteve PowerShell. Ti "poslušalci" so lahko HTTP ali HTTPS in so lahko povezani z enim samim naslovom IP na vašem računalniku. Ko odprete povezavo PowerShell z drugim računalnikom( tehnično se to izvede s protokolom WS-MAN, ki temelji na HTTP-ju), se povezava poveže z enim od teh "poslušalcev"."Poslušalci" so nato odgovorni za pošiljanje prometa aplikaciji, povezani z ustrezno konfiguracijsko datoteko seje;aplikacijo( navadno PowerShell, vendar imate lahko druge aplikacije za gostovanje, če želite), nato pa zažene ukaz in rezultate vrne nazaj prek »poslušalca« čez omrežje in nazaj na vaš računalnik.

Prikaži mi Kako

Prva stvar, ki jo boste morali storiti, je omogočiti Remoting na računalniku, s katerim se želite povezati. To lahko storite tako, da zaženete naslednje:

Enable-PSRemoting

Potem morate odgovoriti z vsemi navodili. Ko zaženete program Enable-PSRemoting, se na vaš računalnik izvede nekaj sprememb:

  • Storitev WinRM se zažene.
  • Storitev WinRM se spremeni iz ročnega zagonskega načina na Automatic.
  • Ustvari HTTP poslušalca, ki je vezan na vse vaše omrežne kartice.
  • Ustvari tudi izjemo za vhodni požarni zid za protokol WS-MAN.
  • Ustvarjene so bile privzete konfiguracije sej

Če uporabljate operacijski sistem Windows 7 in je lokacija vaše omrežne kartice nastavljena na Javno, bo omogočilo, da se PowerShell Remoting ne bo uspel.Če želite to popraviti, preprosto preklopite na domačo ali delovno omrežje. Lahko pa preskočite omrežno preverjanje s pomočjo naslednjega:

Enable-PSRemoting -SkipNetworkProfileCheck

Predlagamo vam, da precej spremenite svojo omrežno lokacijo.

Obstajata dva načina povezovanja z drugim računalnikom z orodjem PowerShell. Obstaja ena-ena metoda, ki je zelo podobna uporabi SSH-ja, nato pa obstaja ena do več načinov.

Uporaba seje PowerShell

Prvi način povezovanja z oddaljenim računalnikom s programom PowerShell je uporaba nekaj, kar imenujemo PowerShell Session. Preprosto postavite sejo, ki omogoča, da ukaze na oddaljenem računalniku upravljate interaktivno, podobno kot vi na svojem računalniku.Če želite odpreti sejo, preprosto vnesite naslednje:

Enter-PSSession-ComputerName "Darlah"

Poziv bo dobil predpono, ki označuje stroj, s katerim upravljate ukaze cmdlets.

Od tu lahko resnično zdravite poziv, kot da sedite na oddaljenem računalniku. Na primer, če želite videti vse datoteke v pogonu C: \, lahko naredite preprosto:

Get-ChildItem -Path C: \

Če prihajate iz ozadja Linuxa, si lahko zamislite, da uporabite to metodo za oddaljevanje kot PowerShell alternativo SSH.

Uporaba ukaza

za ukazno vodenje Drugi način, s katerim lahko PowerShell uporabljate na oddaljenem računalniku, je z ukazom Invoke-Command. Prednost za uporabo ukaza Invoke-Command je dejstvo, da lahko isti ukaz izvršite istočasno na več napravah. Kot si lahko predstavljate, je to še posebej koristno, če želite storiti nekaj, kot je zbiranje dnevnikov dogodkov iz vaših strežnikov. Invoke-Command sledi naslednji sintaksi:

Invoke-Command-ComputerName Darlah, localhost-ScriptBlock{ Get-EventLog Application -Newest 2}

Ker se ukaz izvaja vzporedno na vseh računalnikih, boste potrebovali nekaj, da vidite, kateri računalnikrezultat je prišel. To lahko storite tako, da pogledate lastnost PSComputerName.

Ko uporabljate ukaz za pozivanje, nimate več predmetov, ki bi jih lahko pričakovali v Pipeline. Vidite, da bi PowerShell lahko dobil informacije od oddaljenega računalnika nazaj na vaš računalnik, morajo nekako predstaviti predmete, ki jih je ukaz izvajal na oddaljenih napravah. Zdi se, da je današnji dan, da predstavlja hierarhično strukturo podatkov, uporaba XML, kar pomeni, da ko izdate ukaz z ukazom Invoke-Command, so rezultati prvič zaporedni v XML, preden jih pošljete nazaj na vaš računalnik. Ko se vrnejo na vaš stroj, se dezerializirajo nazaj v predmet;tukaj je, da so, ko so dezerializirani, vse metode, razen metode ToString() , ki jih ima predmet, odtujene od nje.

Opomba: Za to pravilo obstaja nekaj izjem, na primer večina primitivnih tipov, kot so celo število, se lahko dezerializirajo z vključenimi metodami. Obstaja tudi postopek, imenovan Rehidracija, kjer je mogoče nekatere metode dodati nazaj v deserializirane predmete. Zato bodite previdni in se spomnite Get-Member je vaš prijatelj.

Homework

  • Preberite Skrivnosti PowerShell Remoting ebook z Don Jones.