15Jul

Geek School: Naučte sa, ako automatizovať Windows s PowerShell

click fraud protection

V tomto vydaní Geek School vám pomôžeme pochopiť výkonný skriptovací jazyk PowerShell, ktorý je postavený priamo do systému Windows a je mimoriadne užitočný v prostredí IT.

Zatiaľ čo táto séria nie je štruktúrovaná okolo skúšky, učenie PowerShell je jednou z najdôležitejších vecí, ktoré môžete urobiť ako správca siete, takže ak je jedna vec, ktorú sa chcete naučiť pomôcť v IT kariére, to je všetko. Navyše je to veľa zábavy.

Úvod

PowerShell je najvýkonnejší nástroj na automatizáciu, ktorý spoločnosť Microsoft ponúka, a to ako shell, tak skriptovací jazyk.

Upozorňujeme, že táto séria je založená na systéme PowerShell 3, ktorý je dodávaný so systémom Windows 8 a Server 2012. Ak používate systém Windows 7, pred pokračovaním si stiahnite aktualizáciu PowerShell 3.

Zoznámte sa s konzolou a ISE

Existujú dva spôsoby interakcie s PowerShell z krabice, konzoly a integrovaného skriptovacieho prostredia - tiež známy ako ISE.ISE sa výrazne zlepšila od odpornej verzie, ktorá bola dodaná s PowerShell 2 a dá sa otvoriť stlačením klávesovej skratky Win + R, aby ste uviedli počiatočnú schránku a potom zadali príkaz powershell_ise a stlačili kláves Enter.

instagram viewer

Ako vidíte, ISE má rozdelené zobrazenie, takže môžete rýchlo skriptovať, zatiaľ čo výsledok môžete vidieť v dolnej polovici ISE.Spodná polovica ISE, kde sú vytlačené výsledky vášho skriptu, môže byť tiež použitá ako výzva REPL - podobne ako príkazový riadok. V3 ISE nakoniec pridal podporu pre intellisense v tabuľke skriptu, ako aj v interaktívnej konzole.

Môžete tiež interagovať s PowerShell pomocou PowerShell Console, čo budem používať pre väčšinu týchto sérií.Konzola PowerShell sa správa podobne ako príkazový riadok - jednoducho zadáte príkazy a vypliesie výsledky. Ak chcete otvoriť konzolu Windows PowerShell, znova stlačte klávesovú skratku Win + R, aby ste otvorili počiatočnú schránku a zadajte príkazy a potom stlačte kláves enter.

REPL výzvy, ako je tento, sú úžasné pre okamžité uspokojenie: zadáte príkaz a získate výsledky. Zatiaľ čo konzola neponúka intellisense, ponúka niečo nazývané dokončenie karty, ktoré funguje úplne rovnako - jednoducho začnite písať príkaz a stlačte kartu na prechádzanie možných zápasov.

Pomocou systému pomoci

V predchádzajúcich verziách programu PowerShell boli pri inštalácii systému Windows zahrnuté súbory pomoci. Bolo to dobré riešenie z väčšej časti, ale zanechalo nás významný problém. Keď pomocný tím PowerShell musel prestať pracovať na súboroch s nápovedou, vývojári PowerShell boli stále zaneprázdnení kódovaním a vykonávaním zmien. To znamená, že pri dodaní PowerShell sú súbory s pomocníkmi nesprávne, pretože neobsahovali novšie zmeny, ktoré boli vykonané v kóde. Ak chcete vyriešiť tento problém, PowerShell 3 prichádza bez súborov s pomocníkom a obsahuje aktualizovateľný systém pomoci. To znamená, že predtým, ako urobíte čokoľvek, budete chcieť stiahnuť najnovšie súbory nápovedy. Môžete to urobiť otvorením konzoly PowerShell a spustením:

Update-Help

Blahoželáme vám k spusteniu vášho prvého príkazu PowerShell! Pravdou je, že príkaz Update-Help má oveľa viac možností, ako jednoducho len spustiť, a vidieť ich budeme chcieť zobraziť pomoc pre príkaz. Ak chcete zobraziť pomoc pre príkaz, jednoducho prejdite názov príkazu, ktorý chcete pomôcť, s parametrom Name príkazu Get-Help, napríklad:

Get-Help -Name Update-Help

Pravdepodobne sa zaujímate, ako interpretovaťvšetko to text, myslím, prečo sú tam dve veľa informácií v sekcii syntaxe a prečo sú tam toľko zátvoriek všade? Najprv je to prvé: dôvod, prečo sú dve sekcie informácií v sekcii syntaxe, je to, že predstavujú rôzne spôsoby spustenia príkazu. Tieto sú technicky nazývané sady parametrov a môžete ich použiť iba jeden( nie je možné kombinovať parametre z rôznych sád).Na horeuvedenej snímke obrazovky vidíte, že horná sada parametrov má parameter SourcePath, zatiaľ čo v dolnej časti nie je. Dôvodom je, že by ste použili hornú sadu parametrov( ten, ktorý obsahuje SourcePath), ak by ste aktualizovali vaše súbory pomoci z iného počítača v sieti, ktorá ich už stiahla, zatiaľ čo by ste nemuseli určovať zdrojovú cestu, ak stechcel len chytiť najnovšie súbory od spoločnosti Microsoft.

Ak chcete odpovedať na druhú otázku, existuje určitá syntax, ktorá pomáha súborom a je tu:

  • Hranaté zátvorky okolo názvu parametra a jeho typu znamená, že je voliteľným parametrom a príkaz bude bez neho fungovať bez problémov.
  • Hranaté zátvary okolo názvu parametra znamenajú, že parametre sú polohové parametre.
  • Vec napravo od parametra v zaoblených zátvorkách vám povie typ údajov, ktorý parameter očakáva.

Zatiaľ čo by ste sa mali naučiť čítať syntax súborov s nápovedou, ak si niekedy nie ste istý o určitom parametri, pridajte -Full na koniec príkazu get help a prejdite nadol na sekciu parametrov, kde vám o niečom viac poviekaždý parameter.

Get-Help -Name Update-Help -Full

Posledná vec, ktorú potrebujete vedieť o systéme pomoci, je, ako ju môžete použiť na objavovanie príkazov, čo je v skutočnosti veľmi jednoduché.Vidíte, PowerShell akceptuje zástupné znaky takmer kdekoľvek, takže ich použitie spolu s príkazom Get-Help vám umožňuje ľahko nájsť príkazy. Napríklad hľadám príkazy, ktoré sa zaoberajú službou Windows:

Get-Help -name * služba *

Iste, všetky tieto informácie nemusia byť vhodné pre netopierov, ale verte mi, vezmite si čas a naučte sa používaťsystému pomoci. Prichádza to prakticky po celý čas, dokonca aj pre pokročilých scenárov, ktorí to robí už celé roky.

Bezpečnosť

Toto by nebolo správnym úvodom bez uvedenia bezpečnosti. Najväčšou obavou pre tím PowerShell je, že PowerShell sa stáva najnovším a najväčším bodom útoku pre skriptári. Zaviedli niekoľko bezpečnostných opatrení, aby sa ubezpečili, že sa to nestane, a tak sa na ne pozrieme.

Najzákladnejšia forma ochrany pochádza zo skutočnosti, že rozšírenie súboru PS1( rozšírenie použité na označenie skriptu PowerShell) nie je zaregistrované s hostiteľom PowerShell, ktorý je skutočne zaregistrovaný v programe Poznámkový blok. To znamená, že ak dvakrát kliknete na súbor, otvorí sa s poznámkovým blokom namiesto spustenia.

Po druhé, nemôžete spustiť skripty z shell jednoduchým zadaním názvu skriptu, musíte zadať úplnú cestu k skriptu. Ak chcete spustiť skript na jednotke C, budete musieť zadať:

C: \ runme.ps1

Alebo ak už ste v koreňovej jednotke C, môžete použiť nasledovné:

. \ Runme.ps1

Napokon, PowerShell má niečo nazývané Execution Policies, ktoré vás zabraňujú spusteniu akéhokoľvek starého skriptu. V skutočnosti nemôžete spustiť žiadne skripty a je potrebné zmeniť pravidlá vykonávania, ak chcete, aby boli spustené.Existujú 4 pozoruhodné pravidlá vykonávania:

  • Obmedzený : Toto je predvolená konfigurácia v PowerShell. Toto nastavenie znamená, že žiadny skript nemôže bežať bez ohľadu na jeho podpis. Jediná vec, ktorú je možné v aplikácii PowerShell spustiť s týmto nastavením, je individuálny príkaz.
  • AllSigned: Toto nastavenie umožňuje skripty spustiť v PowerShell. Skript musí mať priradený digitálny podpis od dôveryhodného vydavateľa. Pred spustením skriptov od dôveryhodných vydavateľov sa zobrazí výzva.
  • RemoteSigned : Toto nastavenie umožňuje spustenie skriptov, ale vyžaduje, aby skript a konfiguračné súbory stiahnuté z Internetu obsahovali digitálny podpis od dôveryhodného vydavateľa. Skripty spustené z lokálneho počítača nemusia byť podpísané.Pred spustením skriptu nie sú žiadne výzvy.
  • Unrestricted : Umožňuje spustenie nepodpísaných skriptov vrátane všetkých skriptov a konfiguračných súborov stiahnutých z Internetu. Zahŕňa to súbory z aplikácií Outlook a Messenger. Rizikom je spustenie skriptov bez akéhokoľvek podpisu alebo zabezpečenia. Opätovne sme sa rozhodli, že toto nastavenie nikdy nepoužívate.

Ak chcete zistiť, aké sú vaše súčasné pravidlá na vykonávanie, otvorte konzolu PowerShell a zadajte:

Get-ExecutionPolicy

Pre tento kurz a väčšinu ostatných okolností je politika RemoteSigned najlepšia, a preto postupujte nasledovne a zmeňte svoje pravidlá.

Poznámka: Toto bude potrebné vykonať z vyvýšenej konzoly PowerShell.

Set-ExecutionPolicy RemoteSigned

To je všetko pre túto chvíľu ľudia, uvidíme sa zajtra na ďalšie zábavné PowerShell.

Upozornenie: Správny výraz pre príkaz PowerShell je cmdlet a odteraz budeme používať túto správnu terminológiu. Považovalo sa za vhodnejšie ich nazvať príkazmi pre tento úvod.

Ak máte nejaké otázky, môžete ma napísať @taybgibb, alebo zanechať komentár.