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
- 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
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”
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:
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}
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ľ.