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-pomoc
a 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é miestozískať obsah
: Načíta obsah súboruzískať položku
: Získava súbory a priečinkycopy-item
: Skopíruje položku z jedného miesta na druhéOdstrániť položku
: Odstráni súbory a priečinkyget-process
: Získava procesy, ktoré sú spustené na lokálnom alebo vzdialenom počítačidostať službu
: Získava služby bežiace na lokálnom alebo vzdialenom počítačiinvoke-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
, VM
a 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.