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

Obsah:

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

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

Video: Geek School: Naučte sa používať Remoting v PowerShell
Video: Does Google try to return results based on signals other than popularity? - YouTube 2024, Apríl
Anonim
Jeden z najlepších funkcií ponuky PowerShell je schopnosť vzdialene spravovať vaše servery. Umožňuje vám dokonca spravovať aj ich hromadu naraz.
Jeden z najlepších funkcií ponuky PowerShell je schopnosť vzdialene spravovať vaše servery. Umožňuje vám dokonca spravovať aj ich hromadu naraz.

Nezabudnite si prečítať predchádzajúce články v sérii:

  • Naučte sa ako automatizovať systém Windows pomocou nástroja PowerShell
  • Naučiť sa používať Cmdlets v PowerShell
  • Učenie ako používať objekty v PowerShell
  • Formátovanie učenia, filtrovanie a porovnávanie v systéme PowerShell

A zostávajte celú týždeň na zvyšok série.

Čo je Remoting?

Hromadné spravovanie vašich serverov môže byť únavné 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.

Poďme sa technicky

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 to, na 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 počítaču (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" po celej sieti a späť na váš počítač.

Ukáž mi ako

Prvá vec, ktorú budete musieť urobiť, je umožniť Remoting na počítači, ku ktorému sa chcete pripojiť. Môžete to urobiť spustením nasledujúceho:

Enable-PSRemoting

Potom budete musieť odpovedať áno na všetky výzvy. Keď spustíte povoľovanie Povoliť-PS, vykonajú sa niekoľko zmien v počítači:
Potom budete musieť odpovedať áno na všetky výzvy. Keď spustíte povoľovanie Povoliť-PS, vykonajú sa niekoľko zmien v počítači:
  • Spustí sa služba WinRM.
  • Služba služby WinRM sa zmení z manuálneho spustenia na automatický.
  • Vytvára posluch HTTP, ktorý je viazaný na všetky vaše sieťové karty.
  • Tiež vytvára výnimku pre 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 hodnotu Verejné, zapnutie funkcie Vymazanie systému PowerShell zlyhá. Ak to chcete vyriešiť, jednoducho prejdite na miesto domácej alebo pracovnej siete. Prípadne môžete preskočiť sieťovú kontrolu pomocou nasledujúceho:

Enable-PSRemoting –SkipNetworkProfileCheck

Odporúčame radšej zmeniť miesto vašej siete.
Odporúčame radšej zmeniť miesto vašej siete.

Existujú dva spôsoby pripojenia k inému počítaču pomocou funkcie 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 nástroja PowerShell používa niečo nazvané PowerShell Session. 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, jednoducho zadajte nasledujúce:

Enter-PSSession –ComputerName “Darlah”

Táto výzva získa predponu, ktorá znamená, že zariadenie, na ktoré spúšťate rutiny, sa zobrazuje.
Táto výzva získa predponu, ktorá znamená, že zariadenie, na ktoré spúšťate rutiny, sa zobrazuje.
Image
Image

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

Get-ChildItem –Path C:

Ak pochádza z prostredia Linuxu, môžete si pomyslieť, že použijete túto metódu ako jednu alternatívu k SSH ako PowerShell.
Ak pochádza z prostredia Linuxu, môžete si pomyslieť, že použijete túto metódu ako jednu alternatívu k 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 naraz. 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. Invoke-Command nasleduje nasledujúca syntax:

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

Vzhľadom k tomu, že príkaz je vykonávaný paralelne vo všetkých strojoch, budete potrebovať nejaký spôsob, ako zistiť, ktorý počítač daný výsledok pochádza. Môžete to urobiť pohľadom na vlastnosti PSComputerName.
Vzhľadom k tomu, že príkaz je vykonávaný paralelne vo všetkých strojoch, budete potrebovať nejaký spôsob, ako zistiť, ktorý počítač daný výsledok pochádza. Môžete to urobiť pohľadom na vlastnosti PSComputerName.
Keď použijete 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 spustíte na vzdialenom počítači. 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, s výnimkou metódy ToString (), ktoré boli objektom odstránené, sú odňaté.
Keď použijete 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 spustíte na vzdialenom počítači. 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, s výnimkou metódy ToString (), ktoré boli objektom odstránené, sú odňaté.
Image
Image

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 Jones.

Odporúča: