6Sep
Jeden z nejlepších funkcí nabídky PowerShell je schopnost vzdáleně spravovat servery. Dokonce vám dovolí spravovat spoustu z nich najednou.
Ujistěte se, že jste si přečetli předchozí články v sérii:
- Naučte se automatizovat systém Windows s PowerShell
- Naučte se používat cmdlety v PowerShellu
- Učíte se používat objekty ve formátu PowerShell
- Formátování učení, filtrování a porovnávání v PowerShellu
A zůstaňte ladícízbytek série po celý týden.
Co je Remoting?
Hromadná správa vašich serverů může být únavná a pokud jste museli provést změnu konfigurace služby IIS na 50 webových serverech dříve, budete vědět, co tím myslím. Jedná se o typy situací, kdy PowerShell Remoting a jazykové skriptovací schopnosti mohou přijít k záchraně.Pomocí protokolu HTTP nebo bezpečnějšího protokolu HTTPS umožňuje funkce PowerShell Remoting odesílat příkazy vzdálenému počítači ve vaší síti. Stroj poté spustí příkazy a odešle výstup zpět, který se na obrazovce objeví.
Získáme technické informace
V jádru PowerShell Remoting spočívá jedna služba Windows, služba Vzdálená správa systému Windows nebo služba WinRM, jak je známo. Pomocí programu WinRM můžete nastavit jednu nebo více konfigurací relací( také známých jako koncové body), které jsou v podstatě soubory, které obsahují informace o zážitku, který chcete poskytnout osobě připojující ke vzdálené instanci PowerShell. Konkrétněji můžete použít konfigurační soubory relace k určení, kdo může a kdo se nemůže připojit k instanci, jaké skripty a skripty, které mohou spouštět, stejně jako bezpečnostní kontext, ve kterém má být relace spuštěna. Pomocí služby WinRM můžete také nastavit "posluchače", kteří naslouchají příchozím požadavkům PowerShell. Tyto "posluchače" mohou být buď HTTP nebo HTTPS a mohou být vázány na jednu adresu IP ve vašem počítači. Když otevřete připojení PowerShell k jinému počítači( technicky to probíhá pomocí protokolu WS-MAN, který je založen na protokolu HTTP), připojení se váže k jednomu z těchto "posluchačů".Posluchači jsou pak pověřeni odesláním provozu do aplikace spojené s příslušným konfiguračním souborem relace;aplikace( obvykle PowerShell, ale můžete mít jiné hostitelské aplikace, pokud chcete) pak spustí příkaz a přivádí výsledky zpět přes "posluchače" v síti a zpět na váš počítač.
Show Me
První věc, kterou musíte udělat, je povolit Remoting na počítači, ke kterému se chcete připojit. To lze provést spuštěním následujícího:
Enable-PSRemoting
Poté budete muset odpovědět yes na všechny výzvy. Když spustíte službu Enable-PSRemoting, do počítače se provedou několik změn:
- Spustí se služba WinRM.
- Služba služby WinRM se změní z ručního spuštění na automatický.
- Vytváří posluchače HTTP, který je vázán na všechny vaše síťové karty.
- Vytvoří také výjimku pro příchozí firewall pro protokol WS-MAN.
- Některé výchozí konfigurace relací jsou vytvořeny
Pokud používáte systém Windows 7 a umístění vaší síťové karty je nastaveno na možnost Veřejné, povolit odebrání systému PowerShell Remoting. Chcete-li to opravit, prostě přepněte na domovskou nebo pracovní síťovou oblast. Případně můžete přeskočit síťovou kontrolu pomocí následujícího:
Enable-PSRemoting -SkipNetworkProfileCheck
Nicméně doporučujeme raději změnit síťové umístění.
Existují dva způsoby připojení k jinému počítači pomocí nástroje PowerShell. Existuje metoda jedna k jedné, která je velmi podobná použití SSH, a pak existuje metoda jedna k mnoha.
Použití relace PowerShell
První způsob připojení ke vzdálenému počítači pomocí PowerShell používá něco nazvaného relace PowerShell. Jednoduše řečeno, relace umožňuje spouštět příkazy ve vzdáleném počítači interaktivním způsobem, podobně jako na vašem počítači. Chcete-li otevřít relaci, jednoduše zadejte následující:
Enter-PSSession -ComputerName "Darlah"
Nápověda získá předponu, která označuje stroj, na kterém spouštíte rutiny.
Odtud můžete opravit tuto výzvu, jako kdybyste seděli ve vzdáleném počítači. Například pokud chcete zobrazit všechny soubory na jednotce C: \ můžete udělat jednoduchý:
Get-ChildItem -Path C: \
Pokud pocházíte z prostředí Linuxu, můžete si uvažovat o tom, že používáte tento jeden k jednomu způsobu remoting jako alternativu PowerShell k SSH.
Použití příkazu Invoke-Command
Druhým způsobem, jak můžete použít PowerShell ve vzdáleném počítači, je pomocí příkazu Invoke-Command. Výhoda použití příkazu Invoke-Command pochází ze skutečnosti, že můžete provést stejný příkaz na více strojích současně.Jak si dokážete představit, je to obzvláště užitečné, když chcete dělat něco jako shromažďování protokolů událostí z vašich serverů.Invoke-Command následuje následující syntaxi:
Invoke-Command -ComputerName Darlah, localhost -ScriptBlock{ Get-EventLog Application -Newest 2}
Vzhledem k tomu, že příkaz je spuštěn paralelně ve všech počítačích, budete potřebovat nějaký způsob, jak zjistit,daný výsledek pochází z. Můžete to udělat tím, že se podíváte na vlastnost PSComputerName.
Při použití příkazu Invoke-Command již nemáte objekty, které byste očekávali v potrubí.Vidíte, že pro to, aby aplikace PowerShell získala informace ze vzdáleného počítače zpět k vašemu počítači, potřebuje určitý způsob reprezentace objektů, které příkaz spuštěn na vzdáleném počítači vystupuje. V dnešní době se zdá, že zvoleným způsobem, jak reprezentovat hierarchickou datovou strukturu, je použití XML, což znamená, že když vydáte příkaz pomocí příkazu Invoke-Command, výsledky jsou nejprve serializovány do XML před odesláním zpět do vašeho počítače. Jakmile se vrátí k vašemu stroji, jsou deseralizovaní zpět do objektu;je to tady, že když jsou deserializovány, všechny metody, s výjimkou metody ToString() , které se objekt oddělily od něj.
Poznámka: Existují některé výjimky z tohoto pravidla, například většina primitivních typů, jako jsou celá čísla, může být deserializována pomocí jeho metod. Existuje také proces nazvaný Rehydration, kde lze některé metody přidat zpět do deserializovaných objektů.Takže buďte opatrní a nezapomeňte, že Get-Member je váš přítel.
domácí úkol
- Přečtěte si tajemství PowerShell Remoting ebook od Don Jones.