PowerShell

PowerShell

PowerShell základní znalosti

 

L

Název

Obrázek

Popis

1ÚvodPowerShell je skriptovací jazyk a shell od Microsoftu. Z předchozí věty jsem záměrně vypustil slovo nový, protože první verze byla vydána již v roce 2006. Verze 2 je v současné době ve stadiu CTP3 (Community Technology Preview) a její finální uvedení je plánováno současně s vydáním Windows 7.
2Objekty a rouryKdyž někomu řeknete, aby vám vysvětlil výhody PowerShellu, většinou se dozvíte, že jednou z nich je objektová roura. Mechanismus roury už většina z vás asi použila (nebo jste o ní alespoň slyšeli), horší to už bude zřejmě s tou její objektovostí. Práce s objekty vychází z toho, že PowerShell je postavený na platformě .NET Framework (vzpomínáte si, když jsme si v první části, že bez .NETu PowerShell nenainstalujete?). V dnešní části si povíme právě o objektech a rouře. O .NETu si povíme příště.
3Práce s objekty v rouřeV předchozím díle jsme si ukázali jak lze jednoduše pracovat s objekty v rouře. Až doposud jsme pracovali s celou kolekcí objektů (např. všechny procesy, které nám PowerShell vrátil). Nyní si ukážeme, jak filtrovat objekty dle potřeby.
4Dolujeme data aneb jak na WMI Než začneme s dnešní dávkou informací, chtěl bych se zmínit o změně, která se udála ve světě PowerShellu od vydání posledního dílu tohoto seriálu. 27.října byl uvolněn PowerShell v2 pro platformy Windows XP a Windows Server 2003 a nyní je tedy nová verze PowerShellu dostupná pro všechny hlavní platformy od Microsoftu.
5souborový systém a registry Po minulém díle, kdy jsme se podívali do hloubi systému si dnes dáme trochu oddechovější část – práci se souborovým systémem a registrem. Nejdříve se ale podíváme na ideu takzvaných PSDrives.
6PS a Active Directory PowerShell byl navrhnutý primárně pro administrátory, kteří dostali do rukou konečně rozumný nástroj umožňující zautomatizovat jim jejich postupy. Proto jej Microsoft integruje například do Windows Serveru 2008, nebo do SQL Serveru 2008. Vznikají i další knihovny – na správu IIS, Exchange, VmWare, atd.
7Tipy a triky Dnes podíváme na oblast, která možná zajímá většinu z vás – administraci Active Directory pomocí PowerShelu.
8Nadstavby PowerShellu Dnes se podíváme mimo standardní cmdlety dodávané přímo s PowerShellem a řekneme si něco o zdarma dostupných rozšířeních. Zároveň si ukážeme zdroje, které je dobré sledovat.
9Pasti, chytáky a nechtěná překvapení Uživatelé, kteří začínají pracovat s PowerShellem se většinou rychle naučí základní příkazy a postupy. Po čase začnou vytvářet složitější skripty, ve kterých už mohou narazit na záludnosti a chytáky. Pojďme si odhalit některé z nich, abychom se jim už příště vyhnuli a nemuseli dumat nad tím, jestli je to bug, nebo ne.
10FunkceS tou si vystačíme pro většinu administrátorských úkonů. Pokud ale budeme PowerShell využívat pro složitější zprávu, bude se nám časem hodit možnost psaní skriptů. Dnes si řekneme něco o funkcích. Budeme je považovat za základní stavební jednotku skriptu. Funkce můžete psát velmi krátké pro jednostranné použití nebo složitější např. pro zpracování objektů z roury. Takzvané advanced funkce nám například umožní jednoduché vložení nápovědy. Začněme tedy nějakou minimalistickou funkcí.
11Funkce 2I když jsem chtěl dnes navázat tématem skripty a moduly, rozhodl jsem se téma funkcí ještě trochu rozšířit použitím atributu CmdletBinding. Vzhledem k tomu, že funkce považuji za základní stavební kameny pokročilejšího skriptování, nemyslím, že by to bylo na škodu. O skriptech a modulech si tedy povíme až v některém z příštích pokračování.
12Skripty a modulyDalší možností, jak uchovat naše PowerShellí výtvory pro budoucí generace jsou mimo funkcí (probraných v posledních dvou dílech) také skripty a moduly. Dnes si o nich něco povíme.
13Tipy a triky – mapy

Programátorům a administrátorům, kteří objevili možnosti .NETu, PowerShell nabízí možnosti, jak rychle prozkoumat neznámé API. Dnes si ukážeme, jakým způsobem bychom mohli postupovat v případě, že bychom si chtěli osahat kontrol na zobrazování map, GMap.NET - Great Maps for Windows Forms & Presentation. Pro jednoduchost si vybereme kontrol pro Windows Forms. Výsledkem pak bude malá aplikace, která nám vrátí GPS souřadnice vybraného místa.

14ModulyPři našem posledním setkání jsme si ukázali úvod do modulů. Naučili jsme se, jak je importovat do PowerShellu a jak zjistit, které moduly máme již importované. Zajisté jste dali na mou radu a přečetli si tématickou nápovědu about_modules J Dnes si ukážeme, jak vytvořit modul vlastní.
15psakeDnes se podíváme na modul, který se nechal inspirovat z jiných jazyků a používá se nejčastěji na automatizaci buildu (nebudu zde kostrbatě překládát anglické dobře známé pojmy), ale stejně tak dobře najde uplatnění v situacích, kdy potřebujeme provést sekvenci na sobě závislých kroků. Modul si můžete stáhnout z https://github.com/JamesKovacs/psake a již je určitě jasné, že se jmenuje psake.
16Moduly – dokončení

Vytvořili vlastní modul sloužící ke zjišťování aktuálního kurzu. Dnes si ukážeme, jak tento modul ještě trochu vylepšit.

Manifest

17Prohledáváme textNež začneme s dnešním tématem, uděláme si malou exkurzi do novinek ze světa PowerShellu. V dubnu se v Las Vegas konal další ročník konference TEC (The Experts Conference), její součástí byla i první PowerShell Deep Dive konference. Na této konferenci byla oznámena pěkná novinka - specifikace PowerShellu byla uvolněna pod licencí Microsoft Community Promise.
18PowerShell z pohledu programátoraNa úvod se musím zmínit o největší události za posledních pár měsíců, alespoň z mého pohledu: kniha PowerShell In Action (autorem je Bruce Payette) je konečně k dostání i v papírové podobě. Pokud to s PowerShellem myslíte opravdu vážně, tato kniha by už měla ležet ve vašem nákupním košíku.
19Regulární výrazy a PowerShell

V minulém díle jsme si ukázali prohledávání textu pomocí operátorů a cmdletu Select-String. Dnes hledání rozšíříme o regulární výrazy.

20NovinkyMožná vám neuniklo, že světlo světa spatřil PowerShell v3 – tradááá Veselý obličej Zatím pouze jako CTP1 (Community Technology Preview), ale i tak se jedná o událost hodnou zaznamenání. Už nyní jsou vidět některé velice zajímavé novinky. Pojďme se podívat na ty, které jsou dle mého názoru nejzajímavější.
21Představení PSCXV dnešním povídání o PowerShellu představím modul PSCX, neboli PowerShell Community Extensions. Na jeho vývoji se podílí jedni z mála vývojářských PowerShell MVP, proto se dá čekat jiné zaměření, než u většiny PowerShell modulů bývá běžné.
22Představení PSCX podruhé 

Minule jsme se seznámili s modulem PSCX a dnes ukážu, v jakých situacích se může modul hodit. Mimochodem, modul PSCX neuniknul ani oku Scotta Hanselmana.

Předpokládejme, že pracuji na nějakém projektu, je vcelku jedno, na jakém. Potřebuji vygenerovat Lorem ipsum, abych naplnil (HTML) stránku přibližně věrohodným obsahem.

23Select-String

Při našem posledním setkání, jsme si ukázali základy práce s regulárními výrazy. Věnovali jsme se operátoru –match a dnes tyto znalosti využijeme při práci s cmdletem Select-String. Určitě jste někdy potřebovali prohledávat textové soubory na výskyt klíčového slova. Ve Windows lze použít příkaz findstr. Řekněme, že hledáte známý text lorem ipsum v souborem v určitém adresáři.

24Operátor formátováníV nedávno skončených Scripting Games se často vyskytoval ve výsledných skriptem jeden „nešvar“ – výstup byl často podáván ve formě textu pomocí cmdletu Write-Host. Obecně proti Write-Host nic nemám, ale v pravidlech Scripting Games (a v diskusích) bylo často zmiňováno, že výstupem by měly být objekty. My dnes ale půjdeme opačnou cestou a podíváme se, jak vytvořit textový výstup pomocí operátoru formátování (-f).
25Tvorba vlastních objektůminulém díle jsme vytvářeli textový výstup pomocí operátoru formátování. Dnes se podíváme na opačný pól – vytvoříme si vlastní objekt z daného textového výstupu.
26Typ objektuPři našem posledním předprázdninovém setkání jsme vytvářeli vlastní objekty. Dnes posuneme naši snahu o dokonalost o trochu dále.
27PowerShell v3Jak jsem slíbil minule, podíváme se dnes na novou verzi PowerShellu – v3. Nejprve krátce něco k dostupnosti na různých verzích Windows.
28Další zajímavé novinkyMnohokrát se vám stane, že potřebujete ve vašem skriptu nebo funkci restartovat vzdálený počítač a po restartu pokračovat další akcí. Typickým případem je například přidání počítače do domény a jeho následující konfigurace. V PowerShellu verze 2 se toto řešilo typicky ve smyčce, kde jste prováděli ping na vzdálený počítač a po nějaké době jste ve skriptu pokračovali dále. Nová verze naštěstí přináší nové parametry: Wait a For.
29Jak na sdílené složkyNež se pustíme do prohlídky dvou nových modulů, povíme si něco o možnosti takzvaného module autoloading. Pokud jste v PowerShell v2 potřebovali pracovat s cmdletem patřícím do určitého modulu, museli jste nejdříve tento modul načíst. V PowerShellu v3 již toto není potřeba. Stačí poprvé cmdlet použít a modul se automaticky importuje, jako kdybychom použili Import-Module.
30Práce se síťovým adaptéremPokud se učíte jakýkoli nový program, je vždy nejlepší používat jej co nejčastěji. To samé platí i pro PowerShell. Proto jsem již hodně dlouho nepustil cmd.exe a vše spouštím právě z konzole PowerShellu. Dalším krokem je nahrazení nativních příkazů Windows jejich cmdlety a funkcemi. Typickým případem jsou dva nejčastější: ping a ipconfig. Ping má svůj protějšek v cmdletu Test-Connection a ipconfig ve funkci Get-NetIPConfiguration. Dnes si povíme právě o funkcích sloužících k práci se síťovým rozhraním.
31Vylepšená práce s WMI Práce s WMI (Windows Management Instrumentation) je v PowerShellu vynikající již od verze 1. Pro mne osobně byl pádným argumentem pro přechod na PowerShell cmdlet Get-WmiObject. S jeho pomocí jsem mohl (a samozřejmě stále mohu) přistupovat ke svému ConfigMgr serveru. Get-WmiObject (a jeho alias gwmi) vám zpřístupňuje WMI velice jednoduchým způsobem. Ve spolupráci s Get-Member se často obejdete bez externí nápovědy.
32Jak na webové stránky Velmi často se stane, že potřebujete pracovat s webovými stránkami. Aťse jedná o stažení celé stránky nebo zpracování její části (třeba na základě daného pravidla – pouze obrázky).
33Přechod z příkazové řádkyV jednom z předchozích dílů jsem zmiňoval, že pokud chcete s PowerShellem pracovat, je dobré jej používat co nejčastěji. Zkusíme se dnes podívat na některé časté operace, které jste možná byli zvyklí v příkazové řádce používat hodně často.
34PowerShell a Azure Active DirectoryJeště než se pustíme do dnešního tématu, vrátil bych se rád ke konferenci TechNet NA 2013, která proběhla před pár dny v New Orleans. A to z toho důvodu, že byly odhaleny některé vlastnosti nové verze PowerShellu (pravděpodobně bude označen jako v4). Bude totiž obsahovat funkcionalitu, kterou tvůrci nazvali Desired State Configuration (DSC). DSC umožňuje vytvořit skript, který určí požadovaný stav systému a pokud systém tento stav nesplňuje, je okamžitě updatován. Syntaxe je velmi podobná syntaxi pro workflow ve verzi 3. Toto je například velmi jednoduchá definice DSC pro ověření instalace (či instalaci) webového serveru.
35PowerShell–PowerShell v4V minulém TechNet Flash magazínu jsem na začátku zmiňoval jednu z nových vlastností PowerShellu v4. Jelikož jsou od té doby již dostupné (v preview) nové verze klienta i serveru (Windows 8.1 a Windows Server 2012 R2), rád bych se na aktuální novinky podíval dnes trochu podrobněji. Pokud si budete chtít vyzkoušet popisované novinky, můžete využít odkazů publikovaných na českém TechNetu pro Windows 8.1 a Server nebo si můžete rozběhat virtuální počítač ve Windows Azure, například pomocí tohoto návodu.
36Hrátky s Hyper-VDnes bych se rád zaměřil trošku více na zkoumání fungování PowerShellu. Čím dál tím častěji se mi stává, že některý z klientů či kolegů potřebuje pomoci s kouskem kódu v PowerShellu. Většinou pro správu mě „neznámé“ technologie. Neznámé = není mou primární oblastí zájmu (SharePoint, Lync, Exchange, …). Pak je pro mne nutné co nejdříve proniknout do fungování produktu a zjistit, jak vlastně mohu PowerShell v určitém scénáři použít. Nedávno jsem si vzpomněl na jednu mou starou příhodu s Hyper-V. Zkusím na příkladu demonstrovat, jak jsem postupoval a budu rád, když kolem tématu vznikne diskuse.
37Tip na práci s časemDnešní článek bude takové malé zamyšlení nad plynoucím časem. Poslední dobou hodně pracuji s ConfigMgr 2012 SP1 (a už se netrpělivě těším na nový ConfigMgr 2012 R2). Jakožto člověk pracující převážně s PowerShellem se mi líbí možnost použít ConfigMgr cmdlety z konzole a „nezdržovat“ se s přechodem do GUI. I v časech ConfigMgr 2007 jsem hodně věcí řešil vlastními skripty (což mi teď připomnělo můj starý PowerGUI PowerPack pro SMS 2003).
38Transakce Transakce v PowerShellu pořád jsou, jenom se o nich nemluví, protože jejich implementace není taková, jakou bychom si ji všichni představovali. Zatím je dostupná pouze pro registr. Nicméně pojďme se podívat, jak taková implementace vypadá.
39Vylepšený Where-ObjectRovnou na začátku říkám, že název článku je trochu zavádějící. Nebudeme se dnes bavit o cmdletu Where-Object, ale o jeho trochu skryté náhradě. Pro použití následujících technik musíte mít nainstalován PowerShell v4.
40Vylepšená konzoleNa téma konzole bylo napsáno a řečeno mnoho (a většinou to byly nepěkné věci). Mnoho lidí se diví, proč PowerShell používá stejnou konzoli jako cmd.exe. Sám Jeffrey Snover jednou řekl, že to je dědictví minulosti, kterého se bohužel PowerShell jen tak nezbaví.
41Cyklotoulky Chtěl bych vám dnes ukázat, jaké možnosti máme v PowerShellu při práci s cykly. Jelikož jsem v poslední době viděl několik špatných použití různých cyklovacích algoritmů.
42Záchranné parametryMám jedno pravidlo, které někteří „odvážnější“ kolegové a zákazníci občas se smíchem znevažují. Vždycky když pouštím nějaký skript či one-liner na produkčním serveru, používám parametr WhatIf. Zároveň mám rád, když při prvních testech mohu použít parametr Verbose. Chci prostě vidět, co PowerShell dělá a mít šanci v dalším běhu zasáhnout. Myslím, že jsem tuto informaci už několikrát zmiňoval. Pojďme se podívat na nejčerstvější příběh.
43NovinkyDobrý den. Vítám vás u nového Flashe, nového článku a novinek ze světa PowerShellu. Dnes nás čeká trochu oddychový, ale o to příjemnější – alespoň pro mne – článek.
44Přejímání skriptů z internetuDnes bych rád navázal na jeden z posledních článků, kde jsem mluvil o používání WhatIf. Byl jsem požádán o pomoc při řešení problému se staženým skriptem – nefungoval. Rovnou říkám, že dotaz byl od běžného IT admina – o PowerShellu má základní povědomost, ale vždy si vystačí s vyhledáním řešení na internetu. To, co najde, poté vloží do konzole nebo ISE, spustí to, a doufá, že se něco (dobrého) stane. Osobně si nedokážu představit, co by se stalo, kdyby mu někdo podstrčil destruktivní kód. Ale to už je jiný příběh.
45Script Browser & Script AnalyzerMicrosoft před nějakou dobou vytvořil nástroj Script Explorer, který umožňoval vyhledávat skripty z různých zdrojů a poté je vkládat přímo do ISE. Vývoj tohoto nástroje byl posléze bohužel ukončen. Nicméně požadavek komunity na podobný nástroj zde stále existoval.
46Krátké tipy na prázdninyDnes se podíváme na dva krátké tipy, které se vám mohou hodit v každodenní praxi. Upřímně řečeno – až do minulého týdne jsem netušil, jak může být první z nich tolik neznámý. Ale po jeho použití jsem uvedl v úžas několik opravdu chytrých lidí a proto se o něj s vámi také podělím. Předpokládám, že skalní fandové PowerShellu jej znají. Pokud mezi ně patříte, zkuste tento tip poslat dál. Třeba budete překvapeni, kolik lidí jej nezná.
47ISESteroids 2.0Před několika měsíci jsem v jednom článku zmiňoval moc povedený Add-in do PowerShell ISE – ISESteroids. Jak sám autor – Tobias Weltner – říká, jedná se o „ISE na steroidech“ – odtud i název. Já jsem měl možnost ISESteroids od první veřejné verze používat a momentálně se jedná o jediný Add-in, který startuji rovnou v ISE profilu.
48Vzdálený přístup poprvéTímto článkem bych chtěl zahájit sérii popisující nastavování a správu vzdáleného přístupu v PowerShellu. Mým cílem bude provést váš všemi možnými scénáři a případnými pastmi.
49Zpracování textuV dnešním textu se podíváme na zpracování textu a na použití PowerShellu při potřebě „rychlé akce“. Jsem právě v Redmodu v campusu Microsoftu na letošním MVP Summitu. Stejně jako každá jiná konference, i tato je nabita přednáškami od pondělí až do pátku. Oficiální program začíná již v neděli a není proto divu, že po několika dnech už tělo začíná protestovat.
50Zpracování textu, vNextV minulém díle jsme se podívali na to, jak zpracovávat textové informace pomocí cmdletu Select-String. Jak jste si možná sami vyzkoušeli, jednalo se o metodu funkční, nicméně pro složitější zpracování se může jednat o metodu ne zcela jednoduchou. Vzhledem k tomu, že zpracování textu patří k častým úkolům, objevil se v novém PowerShellu (v5) nový cmdlet, který zpracování textu zjednodušuje. Není potřeba znát regulární výrazy, což je asi největší výhodou.
51PowerShell a Azure REST APIJsem si jist, že na TechNet blogu sledujete Azure články mého kolegy z Mainstream Technologies – Matouše Rokose. Na Azure můžete jít přes portál nebo (mnou preferovaná varianta) z konzole PowerShellu. V minulosti jsem o modulu pro Microsoft Azure také psal. Občas se ale stane, že Azure cmdlety nepokrývají funkcionalitu, kterou zrovna chcete řešit. V tom případě máte možnost zaprogramovat si v C# (či jiném jazyku) nebo použít pro přístup do Azure REST API.
52Hash tabulkaV PowerShellu se hash tabulka (nebudu zde používat české názvy hešovací tabulka, případně asociativní pole) používá relativně často. Existuje již od verze 1, ale časem se jednoduchost jejího použití vylepšovala. Vzhledem k tomu, že jsem v minulých dnes narazil nezávisle na její špatné použití, rozhodl jsem se, že vám dnes představím její použití.
53Export do HTMLPoslední dobou pracuji více a více s reporty. Zákazníci evidentně chtějí reportovat svou práci a PowerShell je možností, jak si zkrátit čas potřebný pro tvorbu status mailů. Na školeních se mi stalo již několikrát, že následující (nebo podobný) one-liner způsobil u mých posluchačů údiv/úsměv/úžas/úlek J
54PowerShell v5Před pár dny jsem se zúčastnil konference FRESH IT a měl jsem možnost krátce prezentovat informace o novinkách v PowerShellu v5. Vzhledem k tomu, že téma se setkalo s pochopením, rozhodl jsem se udělat v tomto článku krátký souhrn prezentovaných informací. Zároveň bych tyto informace rád v budoucnu rozšířil o podrobnější články tak, jak se bude blížit finální vydání nové verze.
55PowerShell v5 – pokračováníV minulém dílejsme se podívali na některé z novinek PowerShellu v5. Dnes povídání dokončíme a ukážeme si jednu novinku z oblasti Windows obecně.