6Sep

Geek School: Naučte sa používať Remoting v PowerShell

Jednou z najlepších funkcií ponuky PowerShell je schopnosť vzdialene spravovať vaše servery. Umožňuje vám dokonca spravovať aj ich hromadu naraz.

Prečítajte si predchádzajúce články v sérii:

  • Naučte sa automatizovať systém Windows so systémom PowerShell
  • Naučiť sa používať cmdlety v PowerShell
  • Učíme sa používať objekty v PowerShell
  • Učíme formátovanie, filtrovanie a porovnávanie v PowerShell

A zostaňte naladení prezvyšok série celý týždeň.

Čo je Remoting?

Hromadné riadenie vašich serverov môže byť zdĺhavé a ak ste museli urobiť zmenu konfigurácie IIS na 50 webových servery predtým, budete vedieť, čo tým myslím. Toto sú druhy situácií, kedy PowerShell Remoting a jazykové skriptovacie schopnosti môžu prísť na záchranu. Pomocou protokolu HTTP alebo zabezpečenejšieho protokolu HTTPS umožňuje funkcia PowerShell Remoting odosielať príkazy do vzdialeného počítača vo vašej sieti. Stroj potom spustí príkazy a pošle výstup späť k vám, ktorý sa zase zobrazí na obrazovke.

Získať technickú

V jadre PowerShell Remoting leží jedna služba Windows, služba Windows Remote Management alebo služba WinRM, ako sa stalo známym. Pomocou programu WinRM môžete nastaviť jednu alebo viac konfigurácií relácie( známe tiež ako koncové body), ktoré sú v podstate súbory, ktoré obsahujú informácie o zážitku, ktorý chcete poskytnúť osobe, ktorá sa pripája k vašej vzdialenej inštancii PowerShell. Konkrétnejšie môžete použiť konfiguračné súbory relácie na definovanie toho, kto môže a kto sa nemôže pripojiť k inštancii, aké súbory a skripty, ktoré môžu spúšťať, ako aj aký bezpečnostný kontext musí byť relácia spustená.Pomocou služby WinRM môžete tiež nastaviť "poslucháčov", ktorí počúvajú prichádzajúce požiadavky PowerShell. Tieto "poslucháči" môžu byť buď HTTP alebo HTTPS a môžu byť viazané na jednu IP adresu vo vašom počítači. Keď otvoríte pripojenie PowerShell k inému zariadeniu( technicky sa to robí pomocou protokolu WS-MAN, ktorý je založený na protokole HTTP), pripojenie sa viaže na jedného z týchto "poslucháčov"."Poslucháči" sú potom zodpovední za odosielanie návštevnosti do aplikácie spojenej s príslušným konfiguračným súborom relácie.aplikácia( zvyčajne PowerShell, ale môžete mať aj iné hostiteľské aplikácie, ak chcete), potom spustí príkaz a prinesie výsledky naspäť cez "poslucháča" cez sieť a späť na váš počítač.

Ukáž mi ako

Prvá vec, ktorú musíte urobiť, je umožniť Remoting na počítači, s ktorým sa chcete pripojiť.To možno vykonať spustením nasledovného:

Enable-PSRemoting

Potom budete musieť odpovedať áno na všetky výzvy. Keď spustíte povoľovanie Povoliť, vykoná sa niekoľko zmien v počítači:

  • Spustí sa služba WinRM.
  • Služba WinRM sa zmení z manuálneho spúšťacieho režimu na automatický.
  • Vytvára posluch HTTP, ktorý je viazaný na všetky vaše sieťové karty.
  • Vytvára tiež výnimku pre príchodovú bránu firewall pre protokol WS-MAN.
  • Niektoré konfigurácie predvolených relácií sú vytvorené

Ak používate systém Windows 7 a umiestnenie vašej sieťovej karty je nastavené na možnosť Verejné, vypnutie funkcie PowerShell Remoting zlyhá.Ak to chcete vyriešiť, jednoducho prejdite na miesto domácej alebo pracovnej siete. Alternatívne môžete preskočiť sieťovú kontrolu pomocou nasledujúceho:

Enable-PSRemoting -SkipNetworkProfileCheck

Odporúčame vám skôr zmeniť sieťové umiestnenie.

Existujú dva spôsoby pripojenia k inému počítaču pomocou PowerShell. Existuje metóda jedna k jednej, ktorá je veľmi podobná použitiu SSH, a potom existuje metóda jedna k mnohým.

Použitie relácie PowerShell

Prvý spôsob pripojenia k vzdialenému počítaču pomocou programu PowerShell používa niečo, čo sa nazýva relácia PowerShell. Jednoduché spustenie relácie umožňuje spustiť príkazy na vzdialenom počítači v interaktívnom móde takmer rovnakým spôsobom ako na vlastnom počítači. Ak chcete otvoriť reláciu, zadajte nasledovne:

Enter-PSSession -ComputerName "Darlah"

Príkaz dostane predponu, ktorý označuje stroj, na ktorom spúšťate rutiny.

Odtiaľto môžete naozaj liečiť výzvu, ako keby ste sedeli na vzdialenom počítači. Napríklad, ak chcete vidieť všetky súbory na jednotke C: \ môžete urobiť jednoduchý:

Get-ChildItem -Path C: \

Ak pochádza z prostredia Linuxu, môžete premýšľať nad tým, že použijete túto metódu ako jednu alternatívu SSH ako PowerShell.

Pomocou príkazu Invoke-Command

Druhým spôsobom, ako môžete použiť PowerShell na vzdialenom počítači, je pomocou Invoke-Command. Výhoda použitia programu Invoke-Command pochádza zo skutočnosti, že môžete vykonať rovnaký príkaz na viacerých zariadeniach súčasne. Ako si viete predstaviť, je to obzvlášť užitočné, ak chcete robiť niečo ako zhromaždiť denníky udalostí z vašich serverov. Aplikácia Invoke-Command sleduje nasledujúcu syntax:

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

Keďže je príkaz vykonaný paralelne vo všetkých strojoch, potrebujete nejaký spôsob, ako zistiť, ktorý počítačdaný výsledok pochádza z. Môžete to urobiť pohľadom na vlastnosti PSComputerName.

Pri použití príkazu Invoke-Command už nemáte objekty, ktoré by ste mohli očakávať v potrubí.Vidíte, aby PowerShell získal informácie zo vzdialeného počítača späť do vášho počítača, potrebujú nejaký spôsob reprezentácie objektov, ktoré príkaz, ktorý ste spustili na vzdialenom počítači, je výstupom. V súčasnosti sa zdá, že zvolený spôsob, ako reprezentovať hierarchickú dátovú štruktúru, je použiť XML, čo znamená, že pri vydaní príkazu pomocou príkazu Invoke-Command sa výsledky prvýkrát serializujú do XML predtým, ako budú odoslané naspäť do vášho počítača. Akonáhle sa vrátia späť do vášho stroja, sú opäť nasadené do objektu;je to tu, že keď sú deserializované, všetky metódy, okrem metódy ToString() , ktoré objekt bol odňatý od neho.

Poznámka: Existujú určité výnimky z tohto pravidla, napríklad väčšina primitívnych typov, ako sú celá čísla, môže byť deserializovaná so zahrnutými metódami. Existuje aj proces nazývaný rehydratácia, kde je možné niektoré metódy pridať späť do deserializovaných objektov. Takže buďte opatrní a pamätajte, že Get-Member je váš priateľ.

domáca úloha

  • Prečítajte si tajomstvo PowerShell Remoting ebook od Don Jonesa.