/ / Geek School: Naučte sa používať diaľkové ovládanie v PowerShell

Geek School: Naučte sa používať vzdialený prístup v PowerShell

Jednou z najlepších funkcií, ktorú ponúka PowerShell, je možnosť vzdialenej správy serverov. Umožňuje dokonca spravovať aj veľa z nich naraz.

Prečítajte si predchádzajúce články zo série:

  • Naučte sa automatizovať Windows pomocou PowerShell
  • Naučíte sa používať Cmdlets v PowerShell
  • Naučiť sa používať objekty v PowerShell
  • Učenie formátovania, filtrovania a porovnávania v prostredí PowerShell

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

Čo je to Remoting?

Hromadná správa serverov môže byť únavná,a ak ste predtým museli vykonať zmenu konfigurácie služby IIS na 50 webových serveroch, budete vedieť, čo tým myslím. Toto sú také situácie, keď sa PowerShell Remoting a skriptovacie schopnosti jazyka môžu zachrániť. Pomocou protokolu HTTP alebo bezpečnejšieho protokolu HTTPS vám funkcia PowerShell Remoting umožňuje odosielať príkazy do vzdialeného počítača vo vašej sieti. Stroj potom spustí príkazy a odošle výstup späť k vám, ktorý sa následne zobrazí na obrazovke.

Poďme získať technické informácie

Jadrom PowerShell Remoting je jedinýWindows Service, Windows Remote Management alebo WinRM, ako sa už stalo známym. Pomocou WinRM môžete nastaviť jednu alebo viac konfigurácií relácií (známych tiež ako koncové body), čo sú v podstate súbory, ktoré obsahujú informácie o skúsenostiach, ktoré chcete poskytnúť osobe, ktorá sa pripája k vašej vzdialenej inštancii PowerShell. Konkrétnejšie môžete pomocou konfiguračných súborov relácie určiť, kto sa môže a kto sa nemôže pripojiť k inštancii, aké rutiny cmdlet a skripty, ktoré môžu spúšťať, ako aj aký bezpečnostný kontext musí relácia spustiť. Pomocou služby WinRM tiež nastavíte „poslucháčov“, ktorí počúvajú prichádzajúce požiadavky PowerShell. Títo „poslucháči“ môžu byť HTTP alebo HTTPS a môžu byť na vašom počítači viazaní na jednu adresu IP. Keď otvoríte pripojenie PowerShell na inom počítači (technicky sa to robí pomocou protokolu WS-MAN, ktorý je založený na HTTP), pripojenie sa viaže k jednému z týchto „poslucháčov“. „Poslucháči“ sú potom zodpovední za odosielanie prenosu do aplikácie priradenej k príslušnému konfiguračnému súboru relácie; aplikácia (zvyčajne PowerShell, ale môžete mať aj iné hostiteľské aplikácie, ak chcete) potom spustí príkaz a výsledky prenesie späť cez „poslucháča“ v sieti a späť do vášho počítača.

Ukáž mi ako

Prvú vec, ktorú musíte urobiť, je povoliť vzdialený prístup na počítači, ku ktorému sa chcete pripojiť. To možno dosiahnuť spustením nasledujúceho:

Enable-PSRemoting

obraz

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

  • Spustí sa služba WinRM.
  • Služba WinRM sa zmení z režimu manuálneho spustenia na automatický.
  • Vytvára poslucháč HTTP, ktorý je viazaný na všetky vaše sieťové karty.
  • Vytvára tiež výnimku pre prichádzajúci firewall pre protokol WS-MAN.
  • Vytvoria sa niektoré predvolené konfigurácie relácií

Ak používate systém Windows 7 a svoju sieťPoloha karty je nastavená na Verejné, zapnutie funkcie PowerShell Remoting zlyhá. Ak ju chcete opraviť, jednoducho prepnite na sieťové umiestnenie Domov alebo Práca. Môžete tiež preskočiť kontrolu siete pomocou nasledujúcich pokynov:

Enable-PSRemoting –SkipNetworkProfileCheck

obraz

Odporúčame však radšej zmeniť umiestnenie v sieti.

Existujú dva spôsoby pripojenia k inému zariadeniu pomocou PowerShell. Existuje metóda jedna ku jednej, ktorá je veľmi podobná metóde SSH, a potom je k dispozícii metóda jedna ku viacerým.

Používanie relácie PowerShell

Prvý spôsob pripojenia k vzdialenému zariadeniupomocou PowerShell sa používa niečo, čo sa nazýva PowerShell Session. Jednoducho povedané, relácia umožňuje spúšťať príkazy na vzdialenom počítači interaktívnym spôsobom, podobne ako na vlastnom počítači. Ak chcete otvoriť reláciu, jednoducho napíšte:

Enter-PSSession - názov počítača „Darlah“

obraz

Výzva získa predponu, ktorá označuje stroj, proti ktorému sú spustené rutiny cmdlets.

obraz

Od tejto chvíle môžete s výzvou skutočne zaobchádzať, akoby ste sedeli pri vzdialenom počítači. Napríklad, ak chcete vidieť všetky súbory na jednotke C: môžete urobiť jednoduchý:

Get-ChildItem - Cesta C:

obraz

Ak pochádzate z prostredia Linuxu, môžete zvážiť použitie tejto metódy vzdialenej správy ako alternatívy PowerShell k SSH.

Pomocou príkazu Invoke-Command

Druhý spôsob, ako môžete použiť PowerShell na diaľkovom ovládanístroj je pomocou Invoke-Command. Výhoda použitia príkazu Invoke-Command spočíva v tom, že môžete rovnaký príkaz vykonať na viacerých počítačoch súčasne. Ako si viete predstaviť, je to užitočné najmä vtedy, keď chcete robiť niečo ako zhromažďovanie protokolov udalostí zo svojich serverov. Invoke-Command nasleduje nasledujúcu syntax:

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

obraz

Pretože sa príkaz vykonáva paralelne na všetkých počítačoch, budete musieť nejakým spôsobom zistiť, z ktorého PC daný výsledok pochádza. Môžete to urobiť tak, že sa pozriete na vlastnosť PSComputerName.

obraz

Ak používate príkaz Invoke-Command, už ho nemáteobjekty, ktoré by ste mohli očakávať v potrubí. Vidíte, že aby PowerShell mohol získať 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 výstupoch vzdialeného počítača. V súčasnosti sa zdá, že zvoleným spôsobom reprezentácie hierarchickej dátovej štruktúry je použitie XML, čo znamená, že keď zadáte príkaz pomocou príkazu Invoke-Command, výsledky sa najprv odošlú do XML pred odoslaním späť do vášho počítača. Akonáhle sa dostanú späť do vášho stroja, sú deserializované späť do objektu; tu je to, že keď sú deserializované, všetky metódy okrem metódy ToString (), ktoré mal objekt, sa od neho odstránia.

obraz

Poznámka: Existujú niektoré výnimky z tohto pravidla, napríklad najprimitívnejšie typy, ako sú celé čísla, môžu byť deserializované, vrátane zahrnutých metód. Existuje tiež 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 člen Get-Member je váš priateľ.

Domáca úloha

  • Prečítajte si Tajomstvo eKnihy Remoting PowerShell od Don Jonesa.