Pokud jste zápasili s Windows 10, nepochybně jste o PowerShellu slyšeli. Pokud jste se v poslední době pokusili udělat něco fantastického s Win7 / 8.1, pravděpodobně přijde také PowerShell. Po letech spoléhání se na příkazový řádek systému Windows a hromadné dávkové soubory, je čas zaměřit se na něco výkonnějšího, adaptivnějšího - lepšího.
PowerShell je obrovským přírůstkem do sady nástrojů Windows a vzhledem k této enormnosti může vyvolat trochu strachu. Je to skriptovací jazyk, příkazový shell, podlahový vosk? Chcete-li spustit s poskytovateli, musíte propojit rutinu s instancovanou třídou .Net? A proč všechny podpůrné dokumenty hovoří o správcích - musím být profesionálním správcem Windows, abych to mohl použít?
Odpočinout si. PowerShell je silný, ale nemusí být zastrašující.
Následující průvodce je zaměřen na ty, kteří spustili příkaz Windows nebo dva nebo vytvořili dávkový soubor. Zvažte postupnou transformaci ze zvědavého prostředí PowerShell na prostředí PowerShell.
Krok 1: Roztočte to
První věc, kterou budete potřebovat, je samotný PowerShell. Pokud používáte Windows 10, již máte nainstalovanou PowerShell 5 - nejnovější verzi. (Win10 Anniversary Update has 5.1, but you won't know the difference with the Fall Update's 5.0.) Windows 8 and 8.1 ship with PowerShell 4, which is good good for mokré nohy. Instalace prostředí PowerShell ve Windows 7 není obtížná, ale vyžaduje zvláštní péči - a musíte si nainstalovat .Net Framework samostatně. JuanPablo Jofre podrobně popisuje, jak nainstalovat WMF 5.0 (Windows Management Framework), který zahrnuje PowerShell, kromě nástrojů, které pravděpodobně nebudete používat při spuštění, na MSDN.
PowerShell nabízí dvě rozhraní. Pokročilí uživatelé využijí plnohodnotné grafické uživatelské rozhraní známé jako Integrated Scripting Environment (ISE). Začátečníkům se však nejlépe hodí konzole PowerShell, jednoduché textové rozhraní připomínající příkazový řádek Windows nebo dokonce DOS 3.2.
Chcete-li spustit PowerShell jako správce ze systému Windows 10, klikněte na Start a přejděte dolů v seznamu aplikací do Windows PowerShell. Klikněte na tento řádek, klikněte pravým tlačítkem na Windows PowerShell a zvolte Spustit jako správce. V systému Windows 8.1 vyhledejte Windows PowerShell ve složce Windows System. Ve Win7 je ve složce Příslušenství. PowerShell můžete spustit jako „běžného“ uživatele sledováním stejné sekvence, ale levým kliknutím.
V jakékoli verzi systému Windows můžete pomocí prostředí Windows hledat PowerShell. Ve Windows 8.1 a Windows 10 jej můžete umístit do své „Ctrl-X“ nabídky „Napájení“ (klikněte pravým tlačítkem na prázdné místo na hlavním panelu a zvolte Vlastnosti; na kartě Navigace zaškrtněte políčko Nahradit příkazový řádek). Jakmile jej máte otevřený, je dobré připnout PowerShell na hlavní panel. Ano, bude se vám tolik líbit.
Krok 2: Zadejte staromódní příkazy systému Windows
Byli byste ohromeni, kolik syntaxe příkazového řádku systému Windows funguje podle očekávání v prostředí PowerShell.
Například, CD
změní adresáře (aka složky) a dir
stále uvádí všechny soubory a složky obsažené v aktuální složce.
V závislosti na tom, jak spustíte konzolu PowerShell, můžete začít na c: \ Windows \ system32
nebo na c: \ Users \
. V příkladu obrazovky používám CD ..
(všimněte si mezery), abyste se posunuli o jednu úroveň výše, a poté spusťte dir
seznam všech souborů a podsložek ve složce C:\
adresář.
Krok 3: Nainstalujte soubory nápovědy
Příkazy jako CD
a dir
nejsou nativní příkazy prostředí PowerShell. Jsou to aliasy - náhražky skutečných příkazů PowerShellu. Aliasy mohou být pro ty z nás užitečné s pamětí prstů, kterou je těžké překonat. Ale ani se nezačnou dotýkat nejdůležitějších částí PowerShellu.
Chcete-li začít cítit samotný PowerShell, zadejte Pomoc
následovaný příkazem, který znáte. Například na snímku obrazovky zadám pomoc dir
.
To mi říká PowerShell dir
je alias pro příkaz PowerShell Get-ChildItem
. Jistě, pokud píšete get-childitem
na PS C: \>
výzva, uvidíte přesně to, co jste viděli s dir
příkaz.
Jak je uvedeno ve spodní části obrazovky, soubory nápovědy pro PowerShell se neinstalují automaticky. Chcete-li je získat (vy dělat chcete je získat), přihlaste se do prostředí PowerShell v režimu správce a zadejte update-help
. Instalace souborů nápovědy bude trvat několik minut a možná vám bude chybět několik modulů - Nápověda pro NetWNV a SecureBoot se na můj testovací stroj nepodařilo nainstalovat. Ale až budete hotovi, celý systém nápovědy vám bude k dispozici.
Od tohoto okamžiku zadejte získejte pomoc
následuje příkaz („cmdlet“ v prostředí PowerShell, vyslovuje se „command-let“), který se vás týká a zobrazí veškerou nápovědu pro tuto položku. Například, get-help get-childitem
vytvoří souhrn get-childitem
možnosti. Také vás vyzve k zadání variací motivu. Tedy následující:
get-help get-childitem -příklady
produkuje sedm podrobných příkladů, jak používat get-childitem
. Příkaz PowerShell
get-help get-childitem -detailed
zahrnuje těchto sedm příkladů a podrobné vysvětlení všech parametrů dostupných pro get-childitem
rutina.
Krok 4: Získejte nápovědu k parametrům
V pomoc dir
screenshot, možná jste si všimli, že jsou pod dvěma výpisy SYNTAX
pro get-childitem
. Skutečnost, že pro rutinu existují dvě samostatné syntaxe, znamená, že existují dva způsoby spuštění rutiny. Jak oddělujete syntaxe - a co znamenají parametry? Odpověď je snadná, pokud tento trik znáte.
Chcete-li získat všechny podrobnosti o parametrech pro get-childitem
rutinu nebo jakoukoli jinou rutinu použijte -úplný
parametr, jako je tento:
get-help get-childitem - plný
Tím se vytvoří seznam řádků, co můžete s rutinou dělat a co se může (ale nemusí!) Stát. Podívejte se na snímek obrazovky.
Při procházení podrobnostmi parametru je to poměrně snadné vidět get-childitem
lze použít k načtení „podřízených“ položek (například názvů podsložek nebo názvů souborů) v místě, které určíte, se specifickými shodami znaků nebo bez nich. Například:
get-childItem „* .txt“ -recurse
načte seznam všech „* .txt
”Soubory v aktuální složce a všech podsložkách (kvůli - rekurze
parametr). Vzhledem k tomu, že:
get-childitem „HKLM: \ Software“
vrací seznam všech klíčů registru na vysoké úrovni HKEY_LOCAL_MACHINE \ Software
.
Pokud jste se někdy pokusili dostat do registru pomocí příkazového řádku systému Windows nebo dávkového souboru, jsem si jist, že vidíte, jak silný tento druh přístupu musí být.
Krok 5: Přibijte jména
Existuje důvod, proč rutiny, které jsme dosud viděli, vypadají stejně: get-childitem
, update-help
, a získejte pomoc
všichni se řídí stejnou slovesnou podstatnou konvenci. Milosrdně všechny rutiny prostředí PowerShell používají tuto konvenci, přičemž sloveso předchází podstatné jméno (singulární). Ti z vás, kteří tráví týdny bojováním o nejednotně pojmenované příkazy VB a VBA, si mohou vydechnout.
Chcete-li zjistit, kam jdeme, podívejte se na některé z nejběžnějších rutin (díky blogu Hey Ed Wilsona, Scripting Guy!). Začněte s rutinami, které zasahují do vašeho systému, a vytáhněte užitečné informace, například následující:
set-location
: Nastaví aktuální pracovní místo na zadané místozískat obsah
: Získá obsah souboruzískat položku
: Získá soubory a složkycopy-item
: Zkopíruje položku z jednoho místa na druhéodebrat položku
: Odstraní soubory a složkyget-process
: Získá procesy spuštěné v místním nebo vzdáleném počítačiget-service
: Získá služby spuštěné v místním nebo vzdáleném počítačiinvoke-webrequest
: Získá obsah z webové stránky na internetu
Chcete-li zjistit, jak konkrétní rutina funguje, použijte získejte pomoc
, jako v
get-help copy-item -full
Na základě jeho popisu nápovědy můžete snadno zjistit, co chce rutina. Například pokud chcete zkopírovat všechny soubory a složky z Dokumenty
na c: \ temp
, byste použili:
copy-item c: \ users \ [username] \ documents \ * c: \ temp
Jak zadáváte tento příkaz, uvidíte několik příjemných úprav zabudovaných do prostředí PowerShell. Například pokud zadáte copy-i
a stiskněte klávesu Tab, doplní se PowerShell Kopírovat položku
a prostor. Pokud napíšete rutinu nesprávně a PowerShell to nedokáže zjistit, dostanete velmi důkladný popis toho, co se stalo.
Vyzkoušejte tuto rutinu. (Může se vás pokusit přimět k instalaci programu ke čtení pole „o“. Pokud ano, ignorujte jej.)
invoke-webrequest askwoody.com
Získáte výstižný seznam prohlášení o obsahu webové stránky, záhlaví, obrázků, odkazů a dalších. Podívejte se, jak to funguje? Všimněte si v získejte pomoc
výpis pro invoke-webrequest
že invoke-webrequest
rutina „vrací kolekce formulářů, odkazů, obrázků a dalších významných prvků HTML“ - přesně to, co byste měli vidět na obrazovce.
Některé rutiny vám pomohou ovládat nebo ovládat samotný PowerShell:
get-příkaz
: Seznam všech dostupných rutin (je to dlouhý seznam!)get-sloveso
: Seznam všech dostupných sloves (levá polovina rutin)jasný hostitel
: Vymaže displej v hostitelském programu
Různé parametry (pamatujte, získejte pomoc
) vám umožní omezit příkazy a zúžit možnosti, které vám mohou být užitečné. Chcete-li například zobrazit seznam všech rutin, které fungují se službami Windows, zkuste toto:
get-command * -service
Uvádí seznam všech sloves, která jsou k dispozici u servis
jako podstatné jméno. Výsledek:
Získejte službu
Nová služba
Restartujte službu
Obnovit službu
Set-Service
Start-Service
Stop-Service
Pozastavit službu
Tyto rutiny můžete kombinovat s jinými rutinami, abyste se dostali téměř do jakékoli části prostředí PowerShell. To je místo, kde se do obrazu dostanou trubky.
Krok 6: Přiveďte potrubí
Pokud jste někdy používali příkazový řádek systému Windows nebo se proplétali dávkovým souborem, víte o přesměrování a kanálech. Jednoduše řečeno, obě přesměrování (>
znak) a roury ( |
znak) vezměte výstup z akce a přilepte ji na jiné místo. Můžete například přesměrovat výstup a dir
příkaz do textového souboru nebo „posunout“ výsledek a ping
příkaz do a nalézt
, odfiltrovat zajímavé výsledky, například:
dir> temp.txt
ping askwoody.com | najděte „pakety“> temp2.txt
Ve druhém příkazu výše je nalézt
příkaz hledá řetězec balíčky
v potrubním výstupu stránky askwoody.com ping
a vloží všechny řádky, které se shodují, do souboru s názvem temp2.txt
.
Možná překvapivě první z těchto příkazů funguje dobře v prostředí PowerShell. Chcete-li spustit druhý příkaz, chcete něco takového:
ping askwoody.com | pakety výběrového řetězce | out-file temp2.txt
Používání přesměrování a kanálů značně rozšiřuje možnosti příkazového řádku systému Windows: Místo nekonečného posouvání dolů po obrazovce a hledání textového řetězce můžete například sestavit pipedovaný příkaz systému Windows, který provede kontrolu za vás.
PowerShell má schopnost propojení, ale není omezen na text. Místo toho vám PowerShell umožňuje předat celý objekt z jedné rutiny do další, kde je „objekt“ kombinací dat (nazývaných vlastnosti) a akcí (metod), které lze na datech použít.
Tvrdá část však spočívá v zarovnání objektů. Druh objektu dodávaného jednou rutinou musí odpovídat druhům objektů přijatých přijímající rutinou. Text je velmi jednoduchý druh objektu, takže pokud pracujete s textem, seřazování položek je snadné. Jiné objekty nejsou tak primitivní.
Jak na to přijít? Vítejte v získat člena
rutina. Pokud chcete vědět, jaký typ objektu produkuje rutina, proveďte to potrubím získat člena
. Například pokud se snažíte zjistit procesy běžící na vašem počítači a zúžili jste možnosti na get-process
rutina, tady je návod, jak zjistit, co get-process
rutina produkuje:
get-process | získat člena
Spuštění tohoto příkazu vytvoří dlouhý seznam vlastností a metod pro get-process
, ale na samém začátku seznamu vidíte typ objektu, který get-process
vytváří:
Název_typu: System.Diagnostics.Process
To vám také říká následující snímek obrazovky get-process
má vlastnosti zvané Rukojeti
, název
, NPM
, ODPOLEDNE
, SI
, VM
, a WS
.
Pokud chcete manipulovat s výstupem z get-process
abyste s ním mohli pracovat (na rozdíl od toho, aby na monitoru zobrazoval dlouhý seznam aktivních procesů), musíte najít další rutinu, se kterou budete pracovat System.Diagnostics.Process
jako vstup. Chcete-li najít ochotnou rutinu, jednoduše použijete… počkáte… PowerShell:
get-command -Parametertype System.Diagnostics.Process
Tím se vytvoří seznam všech rutin, které zvládnou System.Diagnostics.Process
.
Některé rutiny jsou proslulé tím, že přijímají téměř jakýkoli druh vstupu. Šéf mezi nimi: kde-objekt
. Možná matoucí, kde-objekt
projde každou položkou zaslanou potrubím a použije libovolná kritéria výběru, která požadujete. Nazývá se speciální značka $_
. který vám umožní procházet každou položkou v kanálu, jednu po druhé.
Řekněme, že jste chtěli přijít se seznamem všech procesů běžících na vašem počítači, které se nazývají „svchost
„—V PowerShell mluvit, chcete se shodovat na název
majeteksvchost
. Vyzkoušejte tento příkaz prostředí PowerShell:
get-process | kde-objekt {$ _. Název -eq „svchost“}
The kde-objekt
rutina se na každého dívá System.Diagnostics.Process
položka, porovnává .Název
této položky na „svchost
“; pokud se položka shoduje, vyplivne konec trubky a zadá se na váš monitor. Podívejte se na snímek obrazovky.