Geek School Naučte sa, ako automatizovať Windows s PowerShell
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 spraviť ako správca siete, takže ak existuje jedna vec, ktorú sa chcete naučiť pomôcť v IT kariére, je to tak. 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.
Berte na vedomie, že táto séria je založená na systéme PowerShell 3, ktorý je dodávaný so systémom Windows 8 a Serverom 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 PowerShellom mimo škatuľky, Konzola a Integrované skriptovacie prostredie - známe tiež ako ISE. ISE sa od skrytej verzie, ktorá bola dodávaná s PowerShell 2, veľmi zlepšila a môže sa otvoriť stlačením kombinácie klávesových skratiek Win + R, aby sa zobrazila počiatočná skrinka, potom sa zadá príkaz powerhell_ise a stlačte enter.
Ako vidíte, ISE má rozdelené zobrazenie, takže môžete rýchlo skriptovať, zatiaľ čo výsledok je stále viditeľný v dolnej polovici ISE. Spodná polovica ISE, kde sú vytlačené výsledky vášho skriptu, môže byť tiež použitá ako REPL prompt - podobne ako príkazový riadok. V3 ISE nakoniec pridal podporu pre intellisense v tabuľke skriptov, ako aj v interaktívnej konzole.
Alternatívne môžete komunikovať s PowerShell pomocou PowerShell Console, čo je to, čo budem používať pre väčšinu tejto série. Konzola PowerShell sa správa podobne ako príkazový riadok - stačí zadávať príkazy a spúšťa výsledky. Ak chcete otvoriť konzolu Windows PowerShell Console, stlačte klávesovú kombináciu 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 sú tieto, 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, čo sa nazýva ukončovanie kariet, ktoré funguje rovnako - jednoducho začnite písať príkaz a stlačte kartu na prechádzanie možnými zápasmi.
Pomocou systému pomoci
V predchádzajúcich verziách programu PowerShell boli pri inštalácii systému Windows zahrnuté súbory s nápovedou. Toto bolo pre väčšinu dobrého riešenia, ale zanechalo nás významný problém. Keď pomocný tím PowerShell musel prestať pracovať na súboroch s pomocníkmi, vývojári PowerShell boli stále zaneprázdnení kódovaním a vykonávaním zmien. To znamená, že pri dodaní PowerShell boli súbory nápovedy 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 pomoci súborov z krabice 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 Aktualizovať-Pomoc 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ť celý tento text, mám na mysli, prečo sú v sekcii syntaxe dve veľa informácií a prečo je tam tak veľa zátvoriek? Najprv je to prvé: dôvodom, prečo sú dva bloky 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žívať 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 ste len chcel 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 ide o voliteľný parameter a príkaz bude bez neho fungovať bez problémov.
- Hranaté zátvorky okolo názvu parametra znamenajú, že parametre sú polohové parametre.
- Vec napravo od parametra v zaoblených zátvorkách vám povie typ dát, ktorý očakáva parameter.
Zatiaľ čo by ste sa mali naučiť čítať syntax súboru pomocníka, ak niekedy máte istotu o určitom parametri, pridajte -Full na konci príkazu get help a prejdite nadol do sekcie parametrov, kde vám povie o niečom trochu viac 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 umožňuje ľahko nájsť príkazy. Napríklad hľadám príkazy, ktoré sa zaoberajú službami 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, ako používať systém pomoci. Prichádza to prakticky po celý čas, dokonca aj pre pokročilých scriptorov, ktorí to robí už celé roky.
zabezpečenia
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 tak 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é u hostiteľa 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. Takže ak by ste chceli spustiť skript na C jednotke, musíte zadať:
C: \ runme.ps1
Alebo ak ste už v koreňovej jednotke C, môžete použiť nasledovné:
.\ runme.ps1
Napokon, PowerShell má niečo, čo sa nazýva Vykonávacie pravidlá, ktoré vás zabraňujú len spustiť akýkoľvek starý skript. V skutočnosti nemožno v predvolenom nastavení spustiť žiadne skripty a ak chcete, aby ste ich mohli spustiť, musíte zmeniť pravidlá výkonu. Existujú 4 pozoruhodné vykonávacie pravidlá:
- 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 skriptové 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 neexistujú žiadne výzvy.
- neobmedzený: Toto povoľ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. Riziko tu spočíva v spustení skriptov bez akéhokoľvek podpisu alebo zabezpečenia. Opätovne sme sa rozhodli, že toto nastavenie nikdy nie ste.
Ak chcete zistiť, aké sú vaše aktuálne pravidlá vykonávania, otvorte konzolu PowerShell a zadajte:
Get-ExecutionPolicy
Pre tento kurz a pre väčšinu ostatných okolností je politika RemoteSigned najlepšia, preto postupujte ďalej a zmeňte svoje pravidlá pomocou nasledujúceho.
Poznámka: Toto bude potrebné urobiť z vyvýšenej konzoly PowerShell.
Set-ExecutionPolicy RemoteSigned
To je všetko pre túto chvíľu ľudia, uvidíme sa zajtra za niečo viac PowerShell zábavy.
Odmietnutie zodpovednosti: Správnym výrazom pre príkaz PowerShell je cmdlet a odteraz použijeme túto správnu terminológiu. Považovalo sa za vhodnejšie nazvať im príkazy pre tento úvod.
Ak máte nejaké otázky, môžete ma napísať @taybgibb, alebo zanechať komentár.