Co je Windows PowerShell a co s ním jíst? Část 1: Klíčové vlastnosti

Historicky jsou nástroje příkazového řádku v unixových systémech rozvinutější než v Windows, s příchodem nového řešení se však situace změnila.

Windows PowerShell umožňuje správcům systému automatizovat většinu rutinních úkolů. Lze jej použít ke změně nastavení, zastavení a spuštění služeb a údržbě většiny nainstalovaných aplikací. Považovat modré okno za další interpret příkazů by bylo zavádějící. Tento přístup nevystihuje podstatu inovací společnosti Microsoft. Ve skutečnosti jsou funkce... Windows PowerShell je mnohem širší: v této krátké sérii článků se pokusíme pochopit, jak se řešení od Microsoftu liší od nástrojů, které známe lépe.

Co je Windows PowerShell a co s ním jíst? Část 1: Klíčové vlastnosti

Klíčové vlastnosti 

Samozřejmě Windows PowerShell je primárně příkazový shell se skriptovacím jazykem, původně postavený na .NET Frameworku a později na .NET Core. Na rozdíl od shellů, které přijímají a vracejí textová data, Windows PowerShell pracuje s třídami .NET, které mají vlastnosti a metody. PowerShell umožňuje spouštět běžné příkazy a také poskytuje přístup k objektům COM, WMI a ADSI. Využívá různé úložné prostředky, jako je souborový systém a registr. Windows, ke kterým se přistupuje prostřednictvím tzv. poskytovatelů. Za zmínku stojí možnost vkládat spustitelné komponenty PowerShellu do jiných aplikací pro provádění různých operací, a to i prostřednictvím grafického rozhraní. Platí to i naopak: mnoho aplikací pro Windows poskytují přístup ke svým rozhraním pro správu prostřednictvím PowerShellu. 

Windows PowerShell vám umožňuje:

  • Změna nastavení operačního systému;
  • Řídit služby a procesy;
  • Konfigurace rolí a komponent serveru;
  • Instalace softwaru;
  • Správa nainstalovaného softwaru prostřednictvím speciálních rozhraní;
  • Vkládání spustitelných komponent do programů třetích stran;
  • Vytvářejte skripty pro automatizaci administrativních úloh;
  • Práce se souborovým systémem, registrem Windows, ukládání certifikátů atd.

Shell a vývojové prostředí

Tam Windows PowerShell se dodává ve dvou formách: kromě emulátoru konzole a příkazového shellu existuje také integrované skriptovací prostředí (ISE). Pro přístup k rozhraní příkazového řádku jednoduše vyberte příslušnou zkratku z nabídky. Windows Nebo spusťte powershell.exe z nabídky Spustit. Objeví se modré okno, které se svými možnostmi znatelně liší od starodávného cmd.exe. Nabízí automatické dokončování a další funkce známé uživatelům unixových příkazových shellů.

Co je Windows PowerShell a co s ním jíst? Část 1: Klíčové vlastnosti

Chcete-li pracovat s shellem, musíte si zapamatovat některé klávesové zkratky:

  • Šipky nahoru a dolů procházejí historií pro opakování dříve zadaných příkazů;
  • Šipka vpravo na konci řádku přepisuje předchozí příkaz znak po znaku;
  • Ctrl+Home odstraní napsaný text od pozice kurzoru na začátek řádku;
  • Ctrl+End odstraní text od kurzoru po konec řádku.

F7 zobrazí okno se zadanými příkazy a umožní vám vybrat jeden z nich. Konzole funguje i s výběrem textu pomocí myši, kopírováním a vkládáním, polohováním kurzoru, mazáním, backspace – vše, co máme rádi.

Co je Windows PowerShell a co s ním jíst? Část 1: Klíčové vlastnosti
Windows PowerShell ISE je plnohodnotné vývojové prostředí s editorem kódu s kartami a zvýrazňováním syntaxe, návrhářem příkazů, vestavěným ladicím programem a dalšími programátorskými vychytávkami. Pokud v editoru IDE zadáte za název příkazu pomlčku, zobrazí se rozevírací seznam všech dostupných parametrů spolu s jejich typem. PowerShell ISE můžete spustit buď pomocí zástupce v systémové nabídce, nebo spuštěním spustitelného souboru powershell_ise.exe.

Co je Windows PowerShell a co s ním jíst? Část 1: Klíčové vlastnosti

Cmdlets 

В Windows PowerShell nyní obsahuje tzv. cmdlety. Jedná se o specializované třídy .NET, které implementují řadu funkcí. Jsou pojmenovávány pomocí principu Akce-Objekt (nebo sloveso-podstatné jméno, chcete-li) a pomlčka připomíná predikát a podmět ve větách přirozeného jazyka. Například Get-Help doslova znamená „Get-Help“ nebo v kontextu PowerShellu „Show-Help“. V podstatě se jedná o ekvivalent příkazu man v unixových systémech a manuály v PowerShellu by měly být přístupné tímto způsobem, nikoli voláním cmdletů s přepínačem --help nebo /?. Nezapomeňte na online dokumentaci k PowerShellu: Microsoft ji má poměrně podrobnou.

Kromě Get používají rutiny další slovesa k označení akcí (a nejen sloves, přísně vzato). V níže uvedeném seznamu uvádíme několik příkladů:

Add - přidat;
Clear - Průhledná;
Enable - zapnout;
Disable - vypnout;
New - vytvořit;
Remove - smazat;
Set - dotázat se;
Start - běhat;
Stop - stop;
Export - export;
Import - import.

Existují systémové, uživatelské a volitelné rutiny: v důsledku spuštění všechny vrátí objekt nebo pole objektů. Nerozlišují velká a malá písmena, tzn. z pohledu interpretru příkazů není mezi Get-Help a get-help žádný rozdíl. Znak ';' se používá pro oddělení, ale je nutné jej vložit pouze v případě, že je na stejném řádku spuštěno několik rutin. 

Cmdlets Windows PowerShell je seskupený do modulů (NetTCPIP, Hyper-V atd.) a cmdlet Get-Command se používá k vyhledávání objektů a akcí. Nápovědu k němu můžete zobrazit takto:

Get-Help Get-Command

Co je Windows PowerShell a co s ním jíst? Část 1: Klíčové vlastnosti

Ve výchozím nastavení příkaz zobrazuje stručnou nápovědu, ale parametry (argumenty) jsou předávány rutinám podle potřeby. S jejich pomocí můžete například získat podrobnou (parametr -Detailed) nebo plnou (parametr -Full) nápovědu a také zobrazit příklady (parametr -Examples):

Get-Help Get-Command -Examples

Pomoc v Windows PowerShell se aktualizuje pomocí rutiny Update-Help. Pokud je příkazový řádek příliš dlouhý, argumenty rutiny lze přesunout na další řádek zadáním symbolu „`“ a stisknutím klávesy Enter – nelze jednoduše dokončit psaní příkazu na jednom řádku a pokračovat na dalším.

Zde je několik příkladů běžných rutin: 

Get-Process - zobrazit běžící procesy v systému;
Get-Service — ukázat služby a jejich stav;
Get-Content - zobrazit obsah souboru.

Pro často používané cmdlety a externí nástroje v Windows PowerShell má krátká synonyma zvaná aliasy. Například dir je alias pro Get-ChildItem. Seznam synonym zahrnuje také příkazy podobné unixovým (ls, ps atd.) a cmdlet Get-Help se volá příkazem help. Úplný seznam synonym lze zobrazit pomocí cmdletu Get-Alias:

Co je Windows PowerShell a co s ním jíst? Část 1: Klíčové vlastnosti

Skripty, funkce, moduly a jazyk PowerShell

Skripty Windows Skripty PowerShellu jsou uloženy jako textové soubory s příponou .ps1. Nelze je spustit dvojitým kliknutím; musíte kliknout pravým tlačítkem myši, abyste vyvolali kontextovou nabídku, a vybrat možnost „Spustit s PowerShellem“. V konzoli budete muset buď zadat úplnou cestu ke skriptu, nebo přejít do příslušného adresáře a zadat název souboru. Spouštění skriptů je také omezeno systémovými zásadami. Chcete-li zkontrolovat aktuální nastavení, můžete použít rutinu Get-ExecutionPolicy, která vrátí jednu z následujících hodnot:

Restricted — spouštění skriptů je zakázáno (ve výchozím nastavení);
AllSigned - je povoleno pouze spouštění skriptů podepsaných důvěryhodným vývojářem;
RemoteSigned - povoleno spouštět podepsané a vlastní skripty;
Unrestricted - povoleno spouštět libovolné skripty.

Správce má dvě možnosti. Nejbezpečnější zahrnuje podepisování skriptů, ale to je docela vážná magie – budeme se jím zabývat v dalších článcích. Nyní pojďme cestou nejmenšího odporu a změňme politiku:

Set-ExecutionPolicy RemoteSigned

Co je Windows PowerShell a co s ním jíst? Část 1: Klíčové vlastnosti
K tomu bude nutné spustit PowerShell jako správce, i když zásadu pro aktuálního uživatele můžete změnit pomocí speciálního nastavení.

Skripty jsou psány v objektově orientovaném programovacím jazyce, jehož příkazy jsou pojmenovávány podle stejného principu jako cmdlety popsané dříve: „Akce-Objekt“ („Sloveso-Podstatné jméno“). Jeho hlavním účelem je automatizace administrativních úloh, ale jedná se o plnohodnotný interpretovaný jazyk, který obsahuje všechny potřebné konstrukty: podmíněné větvení, smyčky, proměnné, pole, objekty, ošetření chyb atd. Pro psaní skriptů je vhodný jakýkoli textový editor, ale nejpohodlnější je spouštět ho Windows Prostředí ISE v PowerShellu.

Skriptu můžete předávat parametry, nastavit je jako povinné a také výchozí hodnoty. Kromě toho, Windows PowerShell umožňuje vytvářet funkce a volat je stejně jako cmdlety pomocí konstruktu Function a složených závorek. Skript obsahující funkce se nazývá modul a má příponu .psm1. Moduly musí být uloženy v adresářích definovaných v proměnných prostředí PowerShellu. Můžete si je zobrazit pomocí následujícího příkazu:

Get-ChildItem Env:PSModulePath | Format-Table -AutoSize

Dopravníky

V posledním příkladu jsme použili konstrukci známou uživatelům unixových shellů. Windows Svislý pruh v PowerShellu také umožňuje směrovat výstup jednoho příkazu na vstup jiného, ​​ale v implementaci pipeline je významný rozdíl: již se nejedná o řetězec znaků ani textu. Vestavěné cmdlety a uživatelsky definované funkce vracejí objekty nebo pole objektů a mohou je také přijímat jako vstup. Stejně jako Bourneův shell a jeho četní nástupci, i PowerShell používá pipeline ke zjednodušení složitých úloh.

Nejjednodušší příklad potrubí vypadá takto:

Get-Service | Sort-Object -property Status

Co je Windows PowerShell a co s ním jíst? Část 1: Klíčové vlastnosti
Nejprve je spuštěna rutina Get-Service a poté jsou všechny služby, které přijímá, předány rutině Sort-Object k seřazení podle vlastnosti Status. To, kterému argumentu je předán výsledek předchozí části kanálu, závisí na jeho typu – obvykle je to InputObject. Tato problematika bude podrobněji rozebrána v článku věnovaném programovacímu jazyku PowerShell. 

V případě potřeby lze řetězec rozšířit a výsledek Sort-Object předat jinému cmdletu (budou se provádět zleva doprava). Mimochodem, uživatelé Windows K dispozici je také stránkovací konstrukce, známá všem uživatelům Unixu: 

Get-Service | Sort-Object -property Status | more

Spouštění úloh na pozadí 

Docela často je nutné spustit určitý příkaz na pozadí, aby se nečekalo na výsledek jeho provedení v shellové relaci. Windows PowerShell má pro tento případ několik cmdletů:

Start-Job — spustit úlohu na pozadí;
Stop-Job — zastavit úlohu na pozadí;
Get-Job — zobrazit seznam úloh na pozadí;
Receive-Job — zobrazení výsledku provádění úlohy na pozadí;
Remove-Job — odstranění úlohy na pozadí;
Wait-Job - přenos úlohy na pozadí zpět do konzole.

Ke spuštění úlohy na pozadí použijeme rutinu Start-Job a určíme příkaz nebo sadu příkazů ve složených závorkách:

Start-Job {Get-Service}

Co je Windows PowerShell a co s ním jíst? Část 1: Klíčové vlastnosti
Úlohy na pozadí v Windows S PowerShellem lze manipulovat znalostí jejich názvů. Začněme tím, že se naučíme, jak je zobrazit:

Get-Job

Co je Windows PowerShell a co s ním jíst? Část 1: Klíčové vlastnosti
Nyní si ukážeme výsledek Job1:

Receive-Job Job1 | more

Co je Windows PowerShell a co s ním jíst? Část 1: Klíčové vlastnosti
Všechno je docela jednoduché.

Vzdálené provádění příkazů

Windows PowerShell umožňuje spouštět příkazy a skripty nejen na lokálním počítači, ale i na vzdálených počítačích a dokonce i napříč celými skupinami počítačů. Existuje několik způsobů, jak to udělat:

  • Mnoho rutin má parametr -ComputerName, ale tímto způsobem nebude fungovat například vytvoření dopravníku;
  • Rutina Enter-PSSession umožňuje vytvořit interaktivní relaci na vzdáleném počítači; 
  • Pomocí rutiny Invoke-Command můžete spouštět příkazy nebo skripty na jednom nebo více vzdálených počítačích.

Verze PowerShellu

PowerShell se od svého prvního vydání v roce 2006 výrazně vyvinul. Je k dispozici pro širokou škálu systémů běžících na různých hardwarových platformách (x86, x86-64, Itanium, ARM): Windows XP, Windows Server 2003, Windows Vista Windows Server 2008/2008 R2, Windows 7, Windows 8, Windows 8.1, Windows RT, Windows RT 8.1, Windows Server 2012/2012 R2, Windows 10, Windows Server 2016, GNU/Linux a OS X. Nejnovější verze 6.2 byla vydána 10. ledna 2018. Skripty napsané pro starší verze budou pravděpodobně fungovat i v novějších verzích, ale zpětné portování může být problematické, protože PowerShell v průběhu let přidal velké množství nových cmdletů. Verzi příkazového shellu nainstalovaného v počítači zjistíte pomocí vlastnosti PSVersion vestavěné proměnné $PSVersionTable:

$PSVersionTable.PSVersion

Co je Windows PowerShell a co s ním jíst? Část 1: Klíčové vlastnosti
Můžete také použít rutinu:

Get-Variable -Name PSVersionTable –ValueOnly

Co je Windows PowerShell a co s ním jíst? Část 1: Klíčové vlastnosti
Totéž lze provést pomocí rutiny Get-Host. Ve skutečnosti existuje mnoho možností, ale abyste je mohli používat, musíte se naučit programovací jazyk PowerShell, což budeme dělat v další článek

Výsledky 

Společnost Microsoft vytvořila skutečně výkonný příkazový shell s pohodlným integrovaným prostředím pro vývoj skriptů. To, co ho odlišuje od nástrojů, na které jsme zvyklí ve světě Unixu, je jeho hluboká integrace s operačními systémy této rodiny. Windows, stejně jako software pro ně a platforma .NET Core. PowerShell lze nazvat objektově orientovaným shellem, protože cmdlety a uživatelsky definované funkce vracejí objekty nebo pole objektů a mohou je přijímat jako vstup. Věříme, že tento nástroj je nezbytností pro všechny administrátory serverů. WindowsDoba, kdy se dalo obejít bez příkazového řádku, je pryč. Pokročilý konzolový shell je obzvláště nezbytný na náš nízkonákladový VPS spravovaný Windows Server Jádro, ale to je úplně jiný příběh.

Co je Windows PowerShell a co s ním jíst? Část 1: Klíčové vlastnosti

Průzkumu se mohou zúčastnit pouze registrovaní uživatelé. Přihlásit se, prosím.

Jakým tématům by se měly další články série věnovat jako první?

  • 53,2%Programování v PowerShell123

  • 42,4%Funkce a moduly PowerShell98

  • 22,1%Jak podepisovat vlastní skripty?51

  • 12,1%Práce s repozitáři prostřednictvím poskytovatelů (poskytovatelů)28

  • 57,6%Automatizujte správu počítače pomocí PowerShell133

  • 30,7%Správa softwaru a vkládání spustitelných souborů PowerShellu do produktů třetích stran71

Hlasovalo 231 uživatelů. 37 uživatelů se zdrželo hlasování.

Zdroj: www.habr.com

Kupte si spolehlivý hosting pro stránky s DDoS ochranou, VPS VDS servery 🔥 Kupte si spolehlivý webhosting s ochranou DDoS, VPS VDS servery | ProHoster