Geek School Naučte sa používať Remoting v PowerShell
Jeden z najlepších funkcií ponuky PowerShell je schopnosť vzdialene spravovať vaše servery. Umožní vám to dokonca spravovať aj ich hromadu.
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 o používaní objektov v systéme PowerShell
- Formátovanie učenia, filtrovanie a porovnávanie v systéme PowerShell
A zostávajte celú týždeň na zvyšok seriálu.
Čo je Remoting?
Hromadné spravovanie 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 mám na mysli. Jedná sa o typy 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 skúsenostiach, 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. Títo "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), spojenie 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ť iné hostiteľské aplikácie, ak chcete), potom spustí príkaz a prináša výsledky späť cez "poslucháča" po 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 Povolenie 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.
- Takisto vytvára 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 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:
Povoliť-PSRemoting -SkipNetworkProfileCheck
Odporúčame radšej zmeniť svoje umiestnenie v sieti.
Existujú dva spôsoby pripojenia k inému počítaču pomocou funkcie PowerShell. Existuje jedna k jednej metóde, 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 PowerShell používa niečo, čo sa nazýva PowerShell Session. Jednoduché zadanie relácie vám umožňuje spustiť príkazy na vzdialenom počítači v interaktívnom móde takmer rovnakým spôsobom ako na vašom vlastnom počítači. Ak chcete otvoriť reláciu, jednoducho zadajte nasledujúce:
Zadajte-PSSession -ComputerName "Darlah"
Táto výzva získa predponu, ktorá znamená, že zariadenie, na ktoré spúšťate rutiny, je označené.
Odtiaľ môžete naozaj liečiť 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-Cesta C: \
Ak pochádzate z prostredia Linuxu, môžete si pomyslieť, že použijete túto metódu remotovania ako alternatívu PowerShell k SSH.
Pomocou príkazu Invoke-Command
Druhý spôsob, ako môžete použiť PowerShell na vzdialenom počítači, je pomocou Invoke-Command. Výhoda použitia funkcie Invoke-Command pochádza zo skutočnosti, že môžete vykonať rovnaký príkaz na viacerých počítačoch súčasne. Ako si viete predstaviť, je to obzvlášť užitočné, ak chcete robiť niečo ako zhromažďovať denníky udalostí z vašich serverov. Invoke-Command nasleduje nasledujúca syntax:
Invoke-Command -ComputerName Darlah, localhost -ScriptBlock Get-EventLog Aplikácia -Newest 2
Keďže príkaz je vykonaný paralelne vo všetkých strojoch, budete potrebovať nejaký spôsob, ako zistiť, ktorý PC daný výsledok priniesol. Môžete to urobiť pohľadom na vlastnosť 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 zariadenia späť do vášho počítača, potrebujú nejaký spôsob, ako reprezentovať objekty, ktoré príkaz spustil na vzdialenom počítači. V súčasnosti sa zdá, že zvolený spôsob, ako reprezentovať hierarchickú dátovú štruktúru, je použitie XML, čo znamená, že pri vydaní príkazu pomocou príkazu Invoke-Command sa výsledky prvýkrát serializujú do XML skôr, ako sa vrátia späť do vášho počítača. Akonáhle sa vrátia späť do vášho stroja, sú opäť nasadené do objektu; že gotche je tu, že keď sú deserializované, všetky metódy, s výnimkou metódy ToString (), ktoré objekt bol odstránený z 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 tiež proces s názvom Rehydratácia, pri ktorej je možné niektoré metódy pridať späť do deserializovaných objektov. Takže buďte opatrní a nezabudnite Get-Member je váš priateľ.
Domáca úloha
- Prečítajte si tajomstvo PowerShell Remoting ebook od Don Jonesa.