Dnes se nebudeme věnovat plánovanému tématu (regulární výrazy), ale celý článek bude o aktualitách posledního měsíce.

PowerShell v3

Mož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ší.

Nejviditelnější změny proběhly v grafickém editoru PowerShell ISE. Jedná se především o vylepšený IntelliSense, který se tím dostal na úroveň editorů třetích stran (např. PowerGUI, PowerSE,…). Více v následujících obrázcích:

IntelliSense – jak mám rád tuhle „novinku“. Základní věc, podle které posuzuji editory. Konečně jsme se jí dočkali i v ISE.

clip_image002

Naštěstí funguje i v panelu příkazového řádku:

clip_image004

IntelliSense zobrazuje (stejně jako například Visual Studio) různé ikony pro metody a vlastnosti objektů:

clip_image005

Pro mne rozhodně jedna z nejlepší vizuálních novinek. Už i z toho důvodu, že nyní nebude potřeba instalovat na servery editory třetích stran.

Další zajímavou novinkou v ISE je Add-on nazvaný Commands. Tento Add-on zjednodušuje (hlavně novým uživatelům PowerShellu) vyhledávání potřebných cmdletů a jejich parametrů. Pokud víte, že chcete pracovat s WMI, můžete použít buď Get-Command

PS C:\Scripts > gcm *wmi* -c cmdlet

CommandType Name Definition
----------- ---- ----------
Cmdlet Get-WmiObject Get-WmiObject [-Class] <Stri...
Cmdlet Invoke-WmiMethod Invoke-WmiMethod [-Class] <S...
Cmdlet Register-WmiEvent Register-WmiEvent [-Class] <...
Cmdlet Remove-WmiObject Remove-WmiObject [-Class] <S...
Cmdlet Set-WmiInstance Set-WmiInstance [-Class] <St...

Nebo přímo zmiňovaný Add-on:

clip_image006

Pro vybraný cmdlet, můžete okamžitě vyplnit potřebné parametry a spustit jej:

clip_image008

Tento Add-on můžete spustit (i z PowerShell konzole) pomocí cmdletu Show-Command.

clip_image010

ISE podporuje nově také regiony:

clip_image011

Abych nezapomněl – ISE (chce se mi napsat – konečně) umí zobrazit seznam posledních otevřených souborů.

Zajímavé změny se dočkal cmdlet Where-Object, osobně si myslím, že se jedná o dobrý krok směrem ke zpřístupnění začínajícím PowerShellistům:

PS C:\Scripts > Get-Process | Where-Object { $_.Name -like 'ls*' }

Handles NPM(K) PM(K) WS(K) VM(M) CPU(s)  Id ProcessName
------- ------ ----- ----- ----- ------  -- -----------
    594     10  4828   616    44 153.88 588       lsass

PS C:\Scripts > Get-Process | Where-Object Name -like 'ls*'

Handles NPM(K) PM(K) WS(K) VM(M) CPU(s)  Id ProcessName
------- ------ ----- ----- ----- ------  -- -----------
   
594     10  4828   616    44 153.88 588       lsass

Všimněte si druhého příkladu. Již není potřeba zápisu $._ pro aktuální objekt v rouře. Nový zápis je čitelnější.

Tak to byly nejviditelnější změny v PowerShellu v3 CTP1. Změn je samozřejmě o mnoho víc. Pokud vás zajímají, zkuste se podívat na některý z následujících článků:

PowerShell Deep Dive

V polovině října se mi splnil velký sen. Dostal jsem se na konferenci pořádanou firmou Quest – The Expert Conference (TEC). Firma Quest stojí za známým editorem PowerGUI a cmdlety pro správu Active Directory. Součástí TEC byla i první evropská konference, jejíž obsah byl věnován pouze PowerShellu – PowerShell Deep Dive. Po několika letech jsem měl možnost potkat naživo množství PowerShell guru, které jsem do té doby znal pouze z Twitteru nebo různých online meetingů. Na konferenci přijelo i několik členů PowerShell týmu včetně Bruce Payetta, designera jazyka PowerShellu a autora vynikající knihy PowerShell in Action (mimochodem Bruce na můj dotaz, jestli se dočkáme knihy PowerShell in Action v3 odpověděl, že pravděpodobně ne – doufám, že změní názor :). Pojďme si v krátkosti představit ty nejzajímavější přednášky – třeba vás navnadím na Deep Dive 2012 Veselý obličej

Dmitry Sotnikov: Get your jobs done! Dmitry mluvil o jobech a ukázal základní cmdlety pro práci ve verzi 2 a také ve verzi 3. Tato přednáška nepřinesla nic nového z hlediska tipů pro práci, ale ukázala výhodu toho, když máte někoho z PowerShell týmu v publiku. Dmitry totiž poukázal na fakt, že při práci ve v3 se občas při zobrazení vlastností jobu (pomocí Get-Job) zobrazí parametr StatusMessage s textem test. Otázku směřoval na Bruce Payetta. Bruce začal cosi ťukat do svého notebooku a při své další prezentaci nám ukázal kus zdrojového kódu PowerShellu a vysvětlil, proč se onen text test do výsledku dostal (jednalo se o chybu člověka, který programoval zmiňovaný cmdlet). Super ukázka rychlé reakce na podněty Veselý obličej

Brandon Shell : Notes from the Fields, Production Module Design. Dvě přednášky, které Brandon věnoval povídání o své praxi při vytváření modulů (splunk a BSonPoSh) a při zavádění PowerShellu do praxe. Pro další studium Brandon doporučil článek od Tome Tanasovskiho Modules – Modules – Modules.

Aleksandar Nikolic: Delegated Administration. Alex je jeden z největších expertů na použití vzdálené administrace pomocí PowerShellu. Je mimo jiné i spoluautorem vynikající příručky Administrators Guide to Windows PowerShell Remoting. V této přednášce ukazoval možnosti nastavení tzv. Fan-in scénáře za použití delegování rolí.

Shay Levy & Kirk Munro: Proxy functions. Pro mne jednoznačně nejlepší přednáška celé konference. Shay a Kirk ukazovali možnosti při vytváření proxy funkcí. Nejprve Shay ukázal jak na proxy funkce pomocí standardních technik (můžete se podívat například na jeho starší článek Proxy Functions: Spice Up Your PowerShell Core Cmdlets) a poté Kirk předvedl modul na kterém se Shayem pracovali – PSPX (PowerShell Proxy Extensions). Tento modul opravdu výrazně zjednodušuje vytváření proxy funkcí, proto bych se u něj rád na chvíli zastavil.

Jedna z věcí, která je PowerShell týmu vytýkána, jsou parametry cmdletu Get-ChildItem. Pro vylistování např. pouze adresářů musíte použít cmdlet Where-Object ( Get-ChildItem | Where-Object { $_.PSIsContainer } ). Ideální by bylo, kdyby cmdlet Get-ChildItem rovnou obsahoval možnost zobrazit adresáře (mimochodem ve v3 je již toto vyřešeno). Ve v2 musíte použít proxy funkce. Díky modulu PSPX stačí zapsat pouze:

clip_image012

Poté již můžete použít příkaz

PS C:\> Get-ChildItem –Directory

A cmdlet vám vrátí pouze adresáře. Rozhodně vám doporučuji uvedený modul prozkoumat.

Bruce Payette měl dvě přednášky – PowerShell Workflow a Concurent Operations. Workflows jsou novinkou ve v3 a Bruce ukazoval jejich základní použití. Druhá přednáška byla pro mne trochu jako z jiného světa a rozhodně si počkám až bude uvolněn záznam, abych si mohl celou přednášku projít hezky v klidu ještě jednou.

James O’Neill: Maximize the Reuse of your PowerShell. Velmi zajímavá přednáška na téma moduly. James je autorem modulu pro Hyper-V a má množství zkušeností z praxe. Výtah z jeho přednášky si můžete přečíst na jeho blogu, kde je uveden i link na slidy z Frankfurtu.

Dalším, kdo zveřejnil slidy a kód z přednášky je i Jeffery Hicks, který měl téma Turn Command Line Tools into PowerSHell Tools.

Lightning Rounds – velmi zajímavý koncept krátkých pětiminutových přednášek. Bylo jich celkem deset a zúčastnit se mohli i lidé z „publika“.

Script Club – každý večer po skončení oficiálního programu jsme se ještě téměř všichni sešli, abychom probrali témata, která nás zajímala. Toto byla vynikající příležitost popovídat si s členy PowerShell týmu, MVP či ostatními a rozebrat vlastní skripty. Poslední den nás musela z konferenční místnosti vyhodit uklízecí parta a i potom někteří pokračovali v diskusi v hotelovém baru.

Mimo oficiální program proběhly ještě dvě krátké diskuse. Jedna na téma PowerGUI a druhá na téma Quest AD cmdlets. V průběhu obou jsme se dozvěděli, co nového lze čekat v následujících verzích produktů a také jsme mohli přímo s členy vývojových týmů probrat, co nás zajímá a co bychom případně chtěli v těchto verzích mít.

Rozhodně můžu říct, že mě osobně konference dala opravdu hodně. Upřímně řečeno – obsah bych klidně snesl o něco techničtější, ale možnost vidět po letech lidi, které jsem znal pouze z virtuálního světa byla opravdu k nezaplacení. Stejně tak jako volné konverzace mezi přednáškami či mimo ně. Jestli to půjde, příští rok pojedu znovu. Pokud se chcete nasát atmosféru z Deep Dive, můžete se podívat na mé fotky z celé podařené akce.

A dnes již definitivně poslední zpráva. Začal vycházet PowerShell Magazine. Na adrese http://www.powershellmagazine.com/ se můžete dočíst množství zajímavých informací a novinek z první ruky. Jména, která za vznikem stála jsou dle mého dobrou zárukou kvalitního obsahu.

- David Moravec