Programovanie

Go pro: Príručka mocného používateľa pre PowerShell

Ak ste zápasili s Windows 10, nepochybne ste už počuli o PowerShell. Ak ste sa v poslednej dobe pokúsili urobiť niečo fantastické s programom Win7 / 8.1, pravdepodobne príde aj PowerShell. Po rokoch spoliehania sa na príkazový riadok systému Windows a hromadného dávkovania súborov je čas zamerať sa na niečo výkonnejšie, adaptívnejšie - lepšie.

PowerShell je nesmiernym doplnkom balíka nástrojov Windows a môže vyvolať trochu strachu z tejto enormnosti. Je to skriptovací jazyk, príkazový riadok, podlahový vosk? Musíte prepojiť rutinu s inštanciou triedy .Net, aby ste mohli bežať s poskytovateľmi? A prečo všetky dokumenty technickej podpory hovoria o správcoch - musím byť profesionálnym správcom systému Windows, aby som ich mohol využívať?

Uvoľnite sa. PowerShell je výkonný, ale nemusí byť zastrašujúci.

Nasledujúca príručka je zameraná na tých, ktorí spustili príkaz Windows alebo spustili dávkový súbor. Zvážte to ako postupnú transformáciu zo zvedavého prostredia PowerShell na schopnosť prostredia PowerShell.

Krok 1: Roztočte to

Prvá vec, ktorú budete potrebovať, je samotný PowerShell. Ak používate Windows 10, už máte nainštalovanú najnovšiu verziu PowerShell 5. (Win10 Anniversary Update má 5.1, ale pri Fall Update’s 5.0 rozdiel nepoznáte.) Windows 8 a 8.1 sa dodávajú s PowerShell 4, ktorý je dosť dobrý na to, aby ste si namočili nohy. Inštalácia prostredia PowerShell v systéme Windows 7 nie je nijako zložitá, vyžaduje však osobitnú starostlivosť - a musíte si nainštalovať. NET Framework samostatne. JuanPablo Jofre podrobne popisuje, ako nainštalovať WMF 5.0 (Windows Management Framework), ktorý obsahuje PowerShell, okrem nástrojov, ktoré pri začatí pravdepodobne nebudete používať, na serveri MSDN.

PowerShell ponúka dve rozhrania. Pokročilí používatelia sa dostanú k plnohodnotnému grafickému používateľskému rozhraniu známemu ako Integrated Scripting Environment (ISE). Začiatočníkom však najlepšie poslúži konzola PowerShell, jednoduché textové rozhranie pripomínajúce príkazový riadok systému Windows alebo dokonca DOS 3.2.

Ak chcete spustiť PowerShell ako správca v systéme Windows 10, kliknite na tlačidlo Štart a posuňte sa nadol v zozname aplikácií na Windows PowerShell. Kliknite na tento riadok, kliknite pravým tlačidlom myši na Windows PowerShell a zvoľte možnosť Spustiť ako správca. V systéme Windows 8.1 vyhľadajte Windows PowerShell v priečinku Systém Windows. Vo Win7 sa nachádza v priečinku Príslušenstvo. PowerShell môžete spustiť ako „normálny“ používateľ podľa rovnakej postupnosti, ale s ľavým kliknutím.

V ktorejkoľvek verzii systému Windows môžete pomocou vyhľadávača Windows vyhľadať PowerShell. V systéme Windows 8.1 a Windows 10 ho môžete umiestniť do ponuky Ctrl-X „Napájanie“ (kliknite pravým tlačidlom myši na prázdne miesto na paneli úloh a vyberte príkaz Vlastnosti; na karte Navigácia začiarknite políčko Nahradiť príkazový riadok). Po otvorení je dobré pripnúť PowerShell na panel úloh. Áno, bude sa vám to tak páčiť.

Krok 2: Zadajte staromódne príkazy systému Windows

Boli by ste prekvapení, koľko syntaxe príkazového riadku systému Windows funguje podľa očakávaní v prostredí PowerShell.

Napríklad, cd - zmení adresáre (alias priečinky) a - r stále zobrazuje zoznam všetkých súborov a priečinkov zahrnutých v aktuálnom priečinku.

V závislosti od toho, ako spustíte konzolu PowerShell, môžete začať na c: \ Windows \ system32 alebo o c: \ Users \. V príklade snímky obrazovky používam CD .. (všimnite si medzeru), posuňte sa o jednu úroveň vyššie a potom bežte r zoznam všetkých súborov a podpriečinkov v priečinku C: \ adresár.

Krok 3: Nainštalujte súbory pomocníka

Príkazy ako cd a r nie sú natívne príkazy prostredia PowerShell. Sú to aliasy - náhrady skutočných príkazov PowerShell. Aliasy môžu byť pre tých z nás užitočné s pamäťou prstov, ktorú je ťažké prekonať. Nezačnú sa však dotýkať ani najdôležitejších častí PowerShellu.

Ak chcete začať vnímať samotný PowerShell, napíšte Pomoc nasledovaný príkazom, ktorý poznáte. Napríklad na snímke obrazovky píšem pomoc dir.

Hovorí mi to pomoc PowerShellu r je alias pre príkaz PowerShell Get-ChildItem. Určite, ak píšete get-childitem na PS C: \> Po výzve uvidíte presne to, čo ste videli s r príkaz.

Ako je uvedené v dolnej časti obrazovky, súbory pomocníka pre PowerShell sa nenainštalujú automaticky. Ak ich chcete získať (vy robiť ich chcete získať), prihláste sa do prostredia PowerShell v režime správcu a zadajte aktualizácia-pomoc. Inštalácia súborov pomocníka bude trvať niekoľko minút a možno vám bude chýbať niekoľko modulov - pomocníka pre NetWNV a SecureBoot sa na môj testovací stroj nepodarilo nainštalovať. Ale keď skončíte, celý systém pomoci budete mať k dispozícii.

Od tohto okamihu zadajte získať pomoc nasledovaný príkazom („cmdlet“ v prostredí PowerShell, vyslovený „command-let“), ktorý sa vás týka, a zobrazí celú pomoc pre túto položku. Napríklad, get-help get-childitem vypracuje súhrn get-childitem možnosti. Tiež vás vyzve, aby ste zadali variácie témy. Teda nasledujúce:

get-help get-childitem -príklady

produkuje sedem podrobných príkladov toho, ako sa používajú get-childitem. Príkaz PowerShell

get-help get-childitem -podrobné

obsahuje týchto sedem príkladov a podrobné vysvetlenie všetkých parametrov, ktoré sú k dispozícii pre get-childitem cmdlet.

Krok 4: Získajte pomoc s parametrami

V pomoc dir snímku obrazovky, možno ste si všimli, že pod nimi sú dva výpisy SYNTAX pre get-childitem. Skutočnosť, že pre cmdlet existujú dve samostatné syntaxe, znamená, že sú možné dva spôsoby spustenia. Ako oddelíte syntaxe - a čo znamenajú parametre? Odpoveď je ľahká, ak poznáte trik.

Ak chcete získať všetky podrobnosti o parametroch pre get-childitem cmdlet alebo akýkoľvek iný cmdlet, použite - plný parameter, napríklad tento:

get-help get-childitem -full

Takto sa vytvorí riadkový zoznam toho, čo môžete robiť s rutinou cmdlet a čo sa môže (ale nemusí) stať. Pozri snímku obrazovky.

Po prehľadaní podrobností o parametri je to dosť ľahké vidieť get-childitem je možné použiť na získanie „podradených“ položiek (napríklad názvov podpriečinkov alebo názvov súborov) na mieste, ktoré určíte, s konkrétnymi znakovými zhodami alebo bez nich. Napríklad:

get-childItem “* .txt” -recurse

obnoví zoznam všetkých „*.TXT”Súbory v aktuálnom priečinku a vo všetkých podpriečinkoch (z dôvodu -kurz parameter). Keďže:

get-childitem „HKLM: \ Software“

vráti zoznam všetkých kľúčov registra na vysokej úrovni v HKEY_LOCAL_MACHINE \ Softvér.

Ak ste sa niekedy pokúsili dostať do registra pomocou príkazového riadku systému Windows alebo dávkového súboru, som si istý, že vidíte, aký silný musí byť tento druh prístupu.

Krok 5: Zarážajte mená

Existuje dôvod, prečo rutiny, ktoré sme doteraz videli, vyzerajú rovnako: get-childitem, aktualizácia-pomoca získať pomoc všetky sa riadia rovnakou slovesno-podstatnou konvenciou. Milosrdne, všetky rutiny PowerShell používajú túto konvenciu, pričom sloveso predchádza podstatné meno (jednotné číslo). Tí z vás, ktorí sa týždne trápili nad nejednotne pomenovanými príkazmi VB a VBA, si môžu vydýchnuť.

Ak sa chcete pozrieť, kam ideme, pozrite si niektoré z najbežnejších rutín cmdlet (vďaka blogu Hey, Scripting Guy! Od Eda Wilsona). Začnite s rutinami cmdlet, ktoré zasahujú do vášho systému, a vytiahnite užitočné informácie, napríklad nasledujúce:

  • set-location: Nastaví aktuálne pracovné miesto na zadané miesto
  • získať obsah: Načíta obsah súboru
  • získať položku: Získava súbory a priečinky
  • copy-item: Skopíruje položku z jedného miesta na druhé
  • Odstrániť položku: Odstráni súbory a priečinky
  • get-process: Získava procesy, ktoré sú spustené na lokálnom alebo vzdialenom počítači
  • dostať službu: Získava služby bežiace na lokálnom alebo vzdialenom počítači
  • invoke-webrequest: Získava obsah z webovej stránky na internete

Ak chcete zistiť, ako konkrétna cmdlet funguje, použite získať pomoc, ako v

get-help copy-item -full

Na základe jeho popisu pomoci môžete ľahko zistiť, čo cmdlet chce. Napríklad, ak chcete skopírovať všetky svoje súbory a priečinky z priečinka Dokumenty do c: \ temp, použili by ste:

položka kopírovania c: \ users \ [používateľské meno] \ documents \ * c: \ temp

Počas zadávania tohto príkazu uvidíte niekoľko pekných dotykov zabudovaných do prostredia PowerShell. Napríklad ak píšete copy-i a stlačte kláves Tab, program PowerShell sa vyplní Kopírovať položku a priestor. Ak napíšete cmdlet nesprávne a program PowerShell to nedokáže zistiť, dostanete veľmi dôkladný popis toho, čo sa pokazilo.

Vyskúšajte túto rutinu cmdlet. (Môže sa vás pokúsiť prinútiť nainštalovať program na čítanie poľa „o čom“. Ak áno, ignorujte ho.)

invoke-webrequest askwoody.com

Dostanete výstižný zoznam vyhlásení o obsahu webovej stránky, hlavičiek, obrázkov, odkazov a ďalších. Vidíte, ako to funguje? Oznámenie v získať pomoc zoznam pre invoke-webrequest že invoke-webrequest rutina cmdlet „vracia kolekcie formulárov, odkazov, obrázkov a ďalších významných prvkov HTML“ - presne to, čo by ste mali vidieť na svojej obrazovke.

Niektoré rutiny cmdlet vám pomôžu ovládať alebo ovládať samotný PowerShell:

  • dostať príkaz: Uvádza zoznam všetkých dostupných rutín cmdlet (je to dlhý zoznam!)
  • dostať-sloveso: Uvádza zoznam všetkých dostupných slovies (ľavá polovica cmdletov)
  • jasný hostiteľ: Vymaže displej v hostiteľskom programe

Rôzne parametre (pamätajte, získať pomoc) vám umožní obmedziť príkazy a zúžiť možnosti, ktoré by vám mohli byť užitočné. Ak chcete napríklad zobraziť zoznam všetkých rutín cmdlet, ktoré pracujú so službami systému Windows, vyskúšajte toto:

get-command * -service

Uvádza zoznam všetkých slovies, ktoré sú k dispozícii s služby ako podstatné meno. Výsledok:

Získajte servis

Nová služba

Reštartujte službu

Obnoviť službu

Set-služba

Start-Service

Stop-Service

Pozastaviť službu

Tieto cmdlety môžete kombinovať s inými cmdletmi, aby ste sa dostali do takmer ktorejkoľvek časti prostredia PowerShell. To je miesto, kde sa do obrazu dostanú rúry.

Krok 6: Priveďte potrubie

Ak ste niekedy používali príkazový riadok systému Windows alebo ste sa prepchali dávkovým súborom, viete niečo o presmerovaní a správach. Zjednodušene povedané, obe presmerovania (> znak) a rúry (znak | znak) vezmite výstup z akcie a prilepte ju na iné miesto. Môžete napríklad presmerovať výstup a r príkaz do textového súboru alebo „odfajčiť“ výsledok a ping velenie do a Nájsť, aby ste odfiltrovali zaujímavé výsledky, napríklad takto:

dir> temp.txt

ping askwoody.com | vyhľadajte „pakety“> temp2.txt

V druhom vyššie uvedenom príkaze Nájsť príkaz vyhľadá reťazec balíčky v pripojenom výstupe stránky askwoody.com ping a zalomí všetky riadky, ktoré sa zhodujú, do súboru s názvom temp2.txt.

Možno prekvapivo, prvý z týchto príkazov funguje v prostredí PowerShell dobre. Ak chcete spustiť druhý príkaz, chcete niečo také:

ping askwoody.com | pakety výberového reťazca | mimo súboru temp2.txt

Používanie presmerovania a rúrok výrazne rozširuje možnosti príkazového riadku systému Windows: Namiesto nekonečného rolovania nadol po obrazovke a hľadania napríklad textového reťazca môžete zostaviť príkaz systému Windows, ktorý vykoná vetovanie.

PowerShell má funkciu potrubia, ale neobmedzuje sa iba na text. Namiesto toho vám PowerShell umožňuje preniesť celý objekt z jednej rutiny do druhej, kde „objekt“ je kombináciou údajov (nazývaných vlastnosti) a akcií (metód), ktoré je možné na údajoch použiť.

Najťažšia časť však spočíva v zarovnaní predmetov. Druh objektu dodávaného jednou rutinou sa musí zhodovať s druhmi objektov prijatými prijímajúcou rutinou. Text je veľmi jednoduchý druh objektu, takže ak pracujete s textom, zarovnávanie položiek je jednoduché. Ostatné objekty nie sú také primitívne.

Ako na to prísť? Vitajte v získať člen cmdlet. Ak chcete vedieť, aký typ objektu cmdlet produkuje, pretiahnite ho potrubím získať člen. Napríklad, ak sa snažíte zistiť procesy prebiehajúce na vašom počítači a možnosti ste zúžili na get-process cmdlet, tu je návod, ako zistiť, čo get-process rutina cmdlet produkuje:

získať proces | získať člen

Spustením tohto príkazu sa vytvorí dlhý zoznam vlastností a metód pre get-process, ale na samom začiatku zoznamu môžete vidieť typ objektu, ktorý get-process vytvára:

TypeName: System.Diagnostics.Process

To vám hovorí aj nasledujúca snímka obrazovky get-process má vlastnosti zvané Rúčky, názov, NPM, POPOLUDNIE, SI, VMa WS.

Ak chcete manipulovať s výstupom z get-process aby ste s ním mohli pracovať (na rozdiel od toho, aby na monitore zobrazoval dlhý zoznam aktívnych procesov), musíte si nájsť inú rutinu cmdlet, ktorá bude pracovať s System.Diagnostics.Process ako vstup. Ak chcete nájsť rutinu cmdlet, stačí použiť ... počkať na ňu ... PowerShell:

get-command -Parametertype System.Diagnostics.Process

Takto sa vytvorí zoznam všetkých rutín cmdlet, ktoré zvládnu System.Diagnostics.Process.

Niektoré rutiny cmdlet sú známe tým, že prijímajú takmer akýkoľvek druh vstupu. Šéf medzi nimi: kde-objekt. Možno mätúce, kde-objekt prehľadá každú položku poslanú potrubím, jednu po druhej, a použije všetky kritériá výberu, ktoré požadujete. Existuje špeciálna značka, ktorá sa volá $_. ktorý vám umožní prechádzať každou položkou v kanáli, jednu po druhej.

Povedzme, že chcete vytvoriť zoznam všetkých procesov prebiehajúcich na vašom počítači, ktoré sa nazývajú „svchost”- v PowerShell hovoríte, chcete sa zhodovať na a názov majetoksvchost. Vyskúšajte tento príkaz PowerShell:

získať proces | kde-objekt {$ _. Názov -eq „svchost“}

The kde-objekt cmdlet sa pozrie na každú System.Diagnostics.Process položka, porovnáva .Názov tejto položky do „svchost“; ak sa položka zhoduje, vypľuje ju na koniec potrubia a píše na váš monitor. Pozri snímku obrazovky.

$config[zx-auto] not found$config[zx-overlay] not found