15Jul

Geek School: Naučte se automatizovat systém Windows s PowerShell

click fraud protection

V tomto vydání Geek School vám pomůžeme pochopit výkonný skriptovací jazyk PowerShell, který je postavený přímo do Windows a je mimořádně užitečný v prostředí IT.

Zatímco tato série není strukturována kolem zkoušky, učení PowerShell je jednou z nejdůležitějších věcí, které můžete udělat jako správce sítě, takže pokud existuje jedna věc, kterou se chcete naučit pomáhat vaší IT kariéře, tak to je. Navíc je to spousta legrace.

Úvod

PowerShell je nejvýkonnější nástroj pro automatizaci, který má společnost Microsoft nabídnout, a to jak shell, tak skriptovací jazyk.

Upozorňujeme, že tato řada je založena na PowerShell 3, který je dodáván s Windows 8 a Server 2012. Pokud používáte systém Windows 7, stáhněte si aktualizaci PowerShell 3, než budete pokračovat.

Splnění konzoly a ISE

Existují dva způsoby interakce s PowerShell z krabice, konzoly a integrovaného skriptovacího prostředí - také známého jako ISE.ISE se od zlověstné verze dodávané s PowerShell 2 značně vylepšuje a lze jej otevřít stisknutím kombinace kláves Win + R pro vyvolání spouštěcího pole, zadáním příkazu powershell_ise a stisknutím klávesy enter.

instagram viewer

Jak můžete vidět, že ISE má rozdělené zobrazení, takže můžete rychle skriptovat, zatímco je stále schopen vidět výsledek v dolní polovině ISE.Spodní část ISE, kde jsou vytištěny výsledky skriptu, lze také použít jako příkaz REPL - podobně jako příkazový řádek. V3 ISE konečně přidala podporu pro intellisense jak v panelu skriptu, tak v interaktivní konzoli.

Alternativně můžete komunikovat s PowerShell pomocí PowerShell Console, což je to, co budu používat pro většinu této série. Konzola PowerShell se chová podobně jako příkazový řádek - prostě zadáváte příkazy a vyžehlujete výsledky. Chcete-li otevřít konzolu Windows PowerShell Console, znovu stiskněte kombinaci kláves Win + R a otevřete spouštěcí schránku a zadejte příkaz powershell a pak stiskněte klávesu enter.

REPL výzvy, jako jsou tyto, jsou úžasné pro okamžité uspokojení: zadáte příkaz a získáte výsledky. Zatímco Console nenabízí intellisense, nabídne něco nazvaného dokončení tabulátoru, který funguje stejně podobně - jednoduše začněte psát příkaz a stisknutím záložky procházíte možnými zápasy.

Pomocí systému nápovědy

V předchozích verzích PowerShell byly při instalaci systému Windows zahrnuty soubory nápovědy. Toto řešení bylo z velké části dobré, ale zanechalo nám významný problém. Když tým nápovědy PowerShell musel přestat pracovat na souborech nápovědy, vývojáři PowerShell stále měli obsazeno kódování a provádění změn. To znamená, že při dodávání PowerShell byly soubory nápovědy nesprávné, protože neobsahovaly novější změny provedené v kódu. Chcete-li tento problém vyřešit, PowerShell 3 je dodáván bez nápovědy a obsahuje aktualizovaný systém nápovědy. To znamená, že než uděláte cokoliv, budete chtít stáhnout nejnovější soubory nápovědy. Můžete to provést otevřením konzoly PowerShell a spuštěním:

Update-Help

Gratulujeme vám k spuštění vašeho prvního příkazu PowerShell! Pravdou je, že příkaz Update-Help má mnohem více možností, než jednoduše spustit a vidět je, budeme chtít zobrazit nápovědu pro příkaz. Chcete-li zobrazit nápovědu pro příkaz, jednoduše projděte název příkazu, který vám pomůže, k parametru Name příkazu Get-Help, například:

Get-Help -Name Update-Help

Pravděpodobně jste přemýšlel, jak interpretovatcelý text, mám na mysli, proč existují dvě spousty informací v sekci syntaxe a proč tam je tolik závorek všude? Nejdříve nejdříve: důvod, proč jsou v sekci syntaxe dva bloky informací, je, že představují různé způsoby, jak spustit příkaz. Jedná se o technicky nazývané sady parametrů a můžete je používat pouze po jednom( nelze kombinovat parametry z různých sad).Na výše uvedeném snímku obrazovky můžete vidět, že horní sada parametrů má parametr SourcePath, zatímco spodní není.Důvodem je, že byste použili horní sadu parametrů( ten, který obsahuje SourcePath), kdybyste aktualizovali soubory nápovědy z jiného počítače v síti, která je již stáhli, zatímco byste nemuseli zadávat zdrojovou cestu, pokud jstejen chtěl chytit nejnovější soubory od společnosti Microsoft.

Chcete-li odpovědět na druhou otázku, existuje určitá syntaxe, která pomáhá souborům a je zde:

  • Hranaté závorky kolem názvu parametru a jeho typu znamená, že je volitelný parametr a příkaz bude bez něj fungovat bez problémů.
  • Hranaté úhly okolo názvu parametru znamená, že parametry jsou parametry polohy.
  • Věc vpravo od parametru v hranatých závorkách říká typ dat, který očekává parametr.

Zatímco byste se měli naučit číst syntaxi souboru nápovědy, pokud si někdy nejste jisti o určitém parametru, přiložte -Full na konec příkazu get help a přejděte dolů na sekci parametrů, kde vám o vás něco víckaždý parametr.

Získat-Nápověda -Name Update-Help -Full

Poslední věc, kterou potřebujete vědět o systému nápovědy, je, jak ji můžete použít k objevení příkazů, což je ve skutečnosti velmi snadné.Vidíte, PowerShell přijímá zástupné symboly téměř kdekoli, takže jejich použití společně s příkazem Get-Help vám umožňuje snadno zjistit příkazy. Například hledám příkazy, které se zabývají službami Windows:

Get-Help -name * služba *

Jistě, všechny tyto informace nemusí být užitečné pro netopýr, ale věřte mi, věnujte čas a naučte se používatsystému nápovědy. Je to užitečné po celou dobu, dokonce i pro pokročilé scripty, kteří to dělají už léta.

Zabezpečení

To by nebylo správným úvodem bez uvedení zabezpečení.Největší starostí pro tým PowerShell je, že PowerShell se stává nejnovějším a největším bodem útoku pro skripty. Zavedli několik bezpečnostních opatření, aby se ujistili, že k tomu nedojde, takže se na ně podívejme.

Nejzákladnější forma ochrany pochází ze skutečnosti, že přípona souboru PS1( přípona používaná k označení skriptu PowerShell) není registrována u hostitele PowerShell, který je skutečně registrován v programu Poznámkový blok. To znamená, že pokud dvakrát kliknete na soubor, otevře se s poznámkovým blokem namísto spuštění.

Za druhé nemůžete spouštět skripty ze shellu zadáním názvu skriptu, musíte zadat úplnou cestu ke skriptu. Takže pokud chcete spustit skript na vaší jednotce C, budete muset zadat:

C: \ runme.ps1

Nebo pokud jste již v kořenovém adresáři jednotky C, můžete použít následující:

. \ Runme.ps1

Konečně, PowerShell má něco nazvaného Execution Policies, které vás zastaví právě tím, že spustíte starý skript. Ve skutečnosti ve výchozím nastavení nelze spustit žádné skripty a pokud chcete, aby byly spuštěny, je třeba změnit zásady provádění.Existují 4 pozoruhodné zásady:

  • Restricted : Toto je výchozí konfigurace v PowerShell. Toto nastavení znamená, že žádný skript nemůže běžet, bez ohledu na jeho podpis. Jediná věc, kterou lze v PowerShell spustit s tímto nastavením, je individuální příkaz.
  • AllSigned: Toto nastavení umožňuje skripty spouštět v PowerShell. Skript musí mít přidružený digitální podpis od důvěryhodného vydavatele. Před spuštěním skriptů od důvěryhodných vydavatelů se zobrazí výzva.
  • RemoteSigned : Toto nastavení umožňuje spouštění skriptů, ale vyžaduje, aby skriptové a konfigurační soubory stažené z Internetu měly přidružený digitální podpis od důvěryhodného vydavatele. Skripty spuštěné z místního počítače nemusí být podepsány. Před spuštěním skriptu neexistují žádné výzvy.
  • Unrestricted : Umožňuje spuštění nepodepsaných skriptů včetně všech skriptů a konfiguračních souborů stažených z Internetu. Zahrnuje soubory z aplikace Outlook a Messenger. Riziko zde spočívá ve spouštění skriptů bez jakéhokoli podpisu nebo zabezpečení.Znovu jsme se rozhodli, že nás toto nastavení nikdy neuděláte.

Chcete-li zjistit, jaké jsou platné zásady pro spuštění, otevřete konzolu PowerShell a zadejte:

Get-ExecutionPolicy

Pro tento kurz a většinu jiných okolností je zásada RemoteSigned nejlepší, takže pokračujte a změňte zásady pomocí následujícího.

Poznámka: Musí to být provedeno ze zvýšené konzoly PowerShell.

Set-ExecutionPolicy VzdálenýSIGNED

To je vše pro lidi této doby, zítra se uvidíme pro další zábavu PowerShell.

Odmítnutí odpovědnosti: Správným pojmem pro příkaz PowerShell je cmdlet a od této chvíle budeme používat tuto správnou terminologii. Prostě bylo vhodnější jim říkat příkazy pro tento úvod.

Pokud máte nějaké dotazy, můžete mi píše @taybgibb, nebo zanechte komentář.