neděle 30. listopadu 2008

Get-PSNews |? {$_.CreationTime -lt "7days"}; Write-Host "Týden 48"

Uplynulý týden byl tentokrát na události hodně bohatý. Vzhledem k tomu, že jsem se k sepisování dostal až ve čtvrtek, doufám, že na nic důležitého nezapomenu. Čekají mne dva dny (těžce pracovní) dovolené, takže jsem ve chvíli (opravdového) volna začal pracovat na dvou nových sériích článků. Jedna o operátoru -f a druhá se bude věnovat regulárním výrazům. Doufám, že se mi taky podaří dokončit rozpracovaný článek na téma Get-Member. Co se dělo ve světě PowerShellu v cizině?
  • PowerScripting Podcast dospěl ke kulatým padesátinám. Tentokrát byl hostem Ed Wilson, jeden z Microsoft Scripting Guys. Rozhovor byl hodně zajímavý a občasná střelba do vlastních řad snad znamená, že se Script Centrum dočká podstatného PowerShell redesignu.
  • Hugo Peeters pokračuje v sérii skvělých skriptů. Show-Tree dokáže zobrazit stromovou strukturu jakékoli PS jednotky (PSDrive), tedy např. i registry nebo Active Directory.
  • Na PowerShell scripts byly uveřejněny tři nové skripty. Get-DomainRole, Determine-Domain, Get-LocalGroups.Dva z nich používají pro výstup operátor -f.
  • Jonathan Medd udělal update PowerPacku pro WSUS. Pokud WSUS používáte a tento PowerPack jste ještě nezkoušeli, máte co dohánět.
  • Jak provést příkaz proti všem počítačům v Active Directory? Odpověď v článku na Concentrated Technology. Porovnejte čisté PowerShell řešení proti pouřití Quest AD cmdletů. Jen pro info: jedno z dalších témat, které jsem začal zpracovávat je porovnání různých přístupů do AD (a to z různých hledisek jako je například rychlost odpovědi nebo náročnost na zápis).
  • Jak otestovat existenci objektu v Active Directory uvádí Richard Siddaway.
  • James Brundage uvádí, jaký je při vytváření objektů rozdíl v použití Select-Object a Add-Member.
  • Marco Shaw uveřejnil nový termín pro Windows PowerShell Virtual User Group Meeting #7 - předchozí byl zrušen z důvodu problémů s  Live Meeting servery.
  • Jak vytvořit 20.000 uživatelů v AD? S PowerShellem jednoduše.

sobota 29. listopadu 2008

Operátor formátování - 1. část

Poslední dobou jsem hodně používal operátor -f, nazývaný operátor formátování. Rozhodl jsem se jej tedy zpracovat do série (zatím plánované na čtyři části), ve které bych rád popsal jeho možnosti použití. Abyste nemuseli kód v článku kopírovat ručně, ke každému dílu uveřejním zdroj ve formě souboru TXT použitelného pro skript Start-Demo. První díl můžete stahovat zde.

Operátor slouží k úpravě výstupu např. skriptů. Má dva "parametry" říkající CO chceme formátovat a JAK to chceme formátovat. Pod položkou CO si představte text, číslo, proměnnou nebo třeba metodu .NET Frameworku. Zápis syntaxe je následující:

JAK_FORMATOVAT -f CO_FORMATOVAT

Na levé i pravé straně může být více příkazů, můžete tedy formátovat výstup například pěti proměnných. Nejjednodušší použití jsou například tato:

PS C:\> "{0}" -f "David"
David
PS C:\> "{0} {1}" -f "David", "Martin"
David Martin
PS C:\> "{1} & {0}" -f "David", "Martin"
Martin & David

V prvních dvou příkladech ještě pořádně neformátujeme, ale je vidět použítí. Na levé straně uvádíme ve složených závorkách index textu ze strany pravé. Stejně jako pole se číslování provádí od nuly. Ve druhém řádku tedy vezmeme text "David" (index 0) poté text "Martin" (index 1) a v tomto pořádí je pošleme na standardní výstup. Třetí příklad už mírně výstup mění. Vezme vstupní texty, prohodí jejich pořadí a vloží mezi ně znak &. Uhádnete, co bude výstupem tohoto řádku?

"{4}{4}{1}{5}{0}{3}{0}{5}{2}" -f "e","ka","l","p","po","t"

Práce s indexy je prostě krásná :) Správná odpověď je popokatepetl. Zatím jsme pracovali pouze s pevně danými texty. Mohli jsme samozřejmě postupovat i následujícím způsobem:

PS C:\> $david = "David"
PS C:\> $martin = "Martin"
PS C:\> "{1} & {0}" -f $david, $martin
Martin & David

Kdyby operátor uměl pouze prohazovat indexy, nebyla by práce s ním tak pěkná (resp. byla by pěkná, ale nikdo by ho nepoužíval, protože by byl nadbytečný). Obecná syntaxe levé časti operátoru je trošku více komplikovaná:

{index[,zarovnani][:formatovaciRetezec]}

Prozatím jsme používali pouze index. Ve druhé a třetí části popisu operátoru formátování se podíváme na formatovaciRetezec. V poslední části si ukážeme zarovnani a uděláme zároveň závěrečné shrnutí.

Abyste se těšili na příště, podívejte se na následující příklad. V něm už využíváme formatovaciRetezec a zároveň je vidět, že výstup operátoru formátování můžeme uložit do proměnné pro pozdější použití.

PS C:\> $procesy = Get-Process | Sort-Object CPU -Descending | Select-Object -First 10
PS C:\> foreach ($p in $procesy) {
>> $cpu="{0:###.#}" -f $p.CPU
>> $ws="{0:###.##}" -f ($p.WS/1MB)
>> Write-Host $p.ProcessName `t $cpu `t $ws
>> }
>>
System 241,9 1,23
RSSBandit 156,5 46,15
Rtvscan 93,2 60,21
EZEJMNAP 83,4 3,61
svchost 75,6 26,4
explorer 70,8 25,77
vmware-authd 63,9 4,78
sametime75 54,7 98,18
wmplayer 52 7,19
AcroRd32 46,9 79,31
PS C:\>


Celou druhou část se budeme věnovat formátování datumu a času a budeme si ukazovat jak modifikovat výstup cmdletu Get-Date.

pondělí 24. listopadu 2008

Použití Write-Progress

Na školení PowerShellu se jeden z kolegů ptal, jak udělal /\/\o\/\/ progress bar při instalaci PowerTab. Pro ty z vás, co jej neznají (myslím progress bar :) - jedná se o tento pruh



který je umístěn v horní části okna PowerShellu. Při delším načítání (zapisování, kopírování, ...) dat je to vhodná pomůcka pro uživatele. V každém okamžiku ví, kde přesně se v čase nachází. Abyste nemuseli něco takového sami vymýšlet, je přímo v PowerShellu cmdlet Write-Progress. Pojďme se podívat, jak funguje.

Write-Progress má dva povinné parametry:
  • activity - řetězec, který říká, jaká aktivita probíhá (na obrázku výše je to Loading records ...)
  • status - popisuje konkrétní (aktuální) stav aktivity; v našem případě 136 of 633.
Pokud použijete pouze tyto dva parametry, můžete vyzkoušet jednoduché zobrazení hodnoty čítače (aby bylo něco vidět, přidal jsem čekání 100ms před každou změnou)

for($i=0; $i -le 50; $i++) {
Start-Sleep -m 100
Write-Progress "Ukazuji promennou..." $i }

Výsledkem je následují výstup


Takovýto základní ukazatel nám asi ve většině případů nebude stačit. Je dobré dát uživateli vědět, jak dlouho bude ještě čekat na dokončení operace. K tomu slouží další dva parametry (musí se uvádět jejich jméno)
  • percentComplete - ukazuje formou "teploměru", kolik procent je již hotovo (viz úplně první obrázek)
  • secondsRemaining - počet vteřin do skončení operace
Ukažme si jednoduchý příklad použití druhého parametru

for($i=0; $i -le 10; $i++) {
Start-Sleep 1
$sec = 10-$i
Write-Progress "Ukazuji promennou..." $i -secondsRemaining $sec }

Ve smyčce for zvyšujeme hodnotu proměnné i do deseti a zároveň zobrazujeme počet vteřin zbývajících do konce operace.


Pro úplné popsání Write-Progress nám ještě chybí následující parametry
  • id - specifikuje jedinečné ID progress baru. Lze použít pro zpětné volání.
  • currentOperation - popisuje aktuální operaci. Je více specifický než status.
  • parentId - aktivita nadřazená té aktuální
  • completed - standardně false, pokud je true nezobrazuje se progress bar
  • sourceId - zdroj záznamu
Pokud chcete vidět nějaký smysluplný příklad stáhněte si zdrojové kódy ke knize Windows PowerShell: TFM a koukněte se na P093-InventoryProgress.ps1.

Write-Progress můžete ovládat několika následujícími parametry:
  • $ProgressPreference - může nabývat hodnot SilentlyContinue, Continue, Stop, Inquire. Pokud nastavíte SilentlyContinue, progress bar nebude vidět (stejné jako kdybyste pro každý nastavili -completed = $true).
  • $host.PrivateData.get_Progress*, $host.PrivateData.Progress* - nastavují/zobrazují barvu progress baru.

První obrázek v tomto článku vznikl, při načítání dat z databáze Lotus Notes. V současné době používám novější verzi, která navíc zobrazuje data načítaného záznamu

Write-Progress -Activity "Loading records..." -Status "$i of $DomNumOfDocs" -id 1 -CurrentOperation "$LNlastname" -PercentComplete ($i/$DomNumOfDocs*100)

neděle 23. listopadu 2008

Get-PSNews |? {$_.CreationTime -lt "7days"}; Write-Host "Týden 47"

Uplynulý týden nebyl na události nijak bohatý. Každopádně i kvůli jednomu zmiňovanému skriptu stál za to. Jenom musím říct, že obrázek generovaný pro 814 skupin je opravdu úděsný :-)

pondělí 17. listopadu 2008

Windows PowerShell™ v1.0: TFM®, 2nd Edition

Jak jsem již psal dříve, stal jsem se majitelem knihy Windows PowerShell TFM. Dostal jsem ji jako cenu za hodnocení PowerScripting Podcastu. Myslím, že spíš než kvalitou hodnocení, to bylo exotičností mého bydliště (myslím tím pro lidi z US) Vybral jsem si papírovou knihu a byl jsem velmi překvapen, když mi po 14 dnech přišel link na stažení PDF verze. Nicméně, jak se říká - darovanému koni na zuby nehleď. Ihned jsem se pustil do čtení. Další překvapení se dostavilo po několika dnech, kdy mi přišla i kniha papírová. Psal jsem zpět, jestli se nejedná o nějaký omyl, ale bylo mi pouze popřáno pěkné čtení. Takže mohu kombinovat čtení obou verzí knihy.

Knihu vydalo nakladatelství SAPIEN Press a nyní je v druhé edici. Existuje již edice třetí, ale ta se zabývá PowerShellem v2 a ještě není dostupná v papírové podobě. Papírová kniha stojí oficiálně 60 dolarů, ale v on-line obchodech ji můžete sehnat o mnoho levněji, např.: SAPIEN Press ($41,99) nebo Amazon ($37,79). Elektronická stojí na stránkách SAPIENu 33,99 dolarů. Která z verzí je lepší? Při rozdílu necelých deseti dolarů sázím já osobně na papírovou podobu. Je potřeba samozřejmě připočítat poštovné. Elektronická verze je zamčená a nejde tisknout. V patě každé stránky je vytištěn text, kde je napsáno, komu kniha náleží. Dost řečí, pojďme se podívat na obsah knihy.

Autoři knihy (Don Jones a Jeffery Hicks, oba PowerShell MVP) jsou v PowerShell komunitě dobře známí. Oba pracují pro SAPIEN jako "scripting gurus". Z předchozí věty je jasné, že jsou oba odborníky na slovo vzatými. Knihu rozdělili do čtyř částí:
  • Interaktivní používání PowerShellu
  • Skriptování v PowerShellu
  • Praktické příklady administrace Windows
  • Pokročilé techniky
První část se zabývá použitím konzole PowerShellu. Autoři ukazují základní techniky práce a nepouští se do žádných extrémnějších příkladů. I tak je tato část nabita množstvím informací a je to možná to nejlepší, co kniha obsahuje. 

Ve druhé části autoři popisují možnosti tvorby skriptů včetně používání např. regulárních výrazů. V závěru jsou popsány tipy pro tvorbu skriptů.

Třetí část je zaměřena na administrátory systému Windows a dává jim do ruky tipy pro práci se systémem. Jedná se například o práci se soubory, registry, službami, WMI nebo Active Directory.

Poslední, čtvrtá, část ukazuje pokročilejší témata a to včetně práce s COM objekty, .NET Frameworkem, XML dokumenty. Ukazuje například i tvorbu vlastních objektů nebo pohledů.

Nechci zde vyjmenovávat postupně všechny kapitoly, obsah je (včetně ukázkových kapitol) dostupný na stránkách knihy. Pro mne osobně byla kniha velice přínosná. Pro začátečníka je dle mého názoru stravitelnější než skvělá Payetova PowerShell in Action. Tu jsem začal číst před několika měsíci a nyní se k ní hodlám vrátit. Z knihy jsem měl pocit, že některé části byly psány s větší pečlivostí (možná rozdílný přístup autorů?). Občas jsem našel překlepy a objevil jsem i několik příkladů, ve kterých byly chyby. Ani to však nijak zásadně nesnížilo celkový dojem z knihy. Knize bych dal známku jedna a s klidným srdcem ji mohu doporučit jako vhodný zdroj pro studium PowerShellu.

Get-PSNews |? {$_.CreationTime -lt "7days"}; Write-Host "Týden 46"

Pravidlené týdenní novinky vychází nepravidelně trošku později. Vzhledem k dnešnímu státnímu svátku to snad nebude moc vadit. Celý minulý týden se v mém případě točil kolem školení PowerShellu, které jsem absolvoval. Pokud vás zajímá, co jsme probírali, podívejte se na články z minulého týdne - každý den jsem psal shrnutí. Já si právě stáhl poslední PowerScripting Podcast, jdu si uvařit kafe a pokusím se dohnat i nějaké další dluhy z minulého týdne. Přeji vám pěkný týden.
  • Právě vzniká online kniha o PowerShellu z klávesnice Dr. Tobiase Weltnera.
  • 48. epizoda PowerScripting Podcastu, tentokrát s Lee Holmesem.
  • Popis Here-String na stránkách Concentrated Technology. Rozhodně stojí za naučení a porozumění! Nedávno se tomuto tématu věnoval i Jeffrey Snover.
  • Krásné dvě funkce Translate-SID a Translate-ToSID zveřejnil Hugo Peeters ve svém blogu.
  • Záznam z panelové diskuse o PowerShellu na TechEdu.
  • /\/\o\/\/ uvedl odkazy na videa z TechEdu pohromadě + bonus.
  • V tomto blogu již několikrát zmiňovaný Jaykul se vrhl na tvorbu Wiki pro PowerShell. V současné době se Wiki začíná plnit a v diskusích se o ní hodně mluví. Uvidíme, kam to povede. Zatím se můžete podívat na krátký post obsahující i skript pro generování Wiki nápovědy přímo z help souborů PowerShellu.
  • Nová epizoda PowerScripting Podcastu, s pořadovým číslem 49.

pátek 14. listopadu 2008

Školení PowerShell - den pátý + shrnutí

Ráno jsme začali Modulem 10, Objekty COM a WMI. Všechny konstrukce známe a už používáme PowerShell ryze prakticky. Nejdříve jsme si ukázali, jak lze přes COM přistupovat na různé aplikace jako je například Internet Explorer nebo Excel. Ve druhé části modulu jsme se trošku podrobněji podívali na použití cmdletu Get-WmiObject a pan Malina nám ukázal některá jeho vylepšení v PowerShellu CTP2.

Před obědem jsme se věnovali Modulu 11, Chyby a ladění v PowerShellu. Ukázali jsme si parametr -ErrorAction, zachycování výjimek a použití cmdletu Set-PSDebug. Opět jsme se koukli na novinky ve verzi CTP2. V Modulu 13 jsme se podívali na Rozšíření PowerShellu (Modul 12 jsme prozatím přeskočili). Nebudu vyjmenovávat všechno, ale zmínili jsme se například o PSCX nebo PowerGUI.

Poslední - 14. modul se zabýval tématem Některé další možnosti PowerShellu. Probrali jsme "chuťovky", které byly zmiňovány v průběhu týdne a které se nevešly do žádného jiného modulu. Jednalo se o vzdálený přístup přes PowerShell, regulární výrazy a operátor -f.

Závěrečné zhodnocení kurzu
Tak skriptovací týden skončil. Rozhodně to nebyl ztracený čas. Šel jsem na kurz s tím, že některé věci budu vědět, ale že se i hodně naučím. Kladně hodnotím přístup pana Maliny. Jeho okamžitá reakce na dotazy (pokud ne okamžitá, tak v průběhu přestávek) a znalost PowerShellu obecně je velkou devizou kurzu. Postupovali jsme od základů, přes cmdlety až po složitější tématiku a myslím, že každý dokázal tempo v klidu udržet. Na kurzu jsem našel asi jedinou vadu - byl bych spokojen, kdyby trval asi tak měsíc :)

Na úplný závěr malé doporučení:

Get-MHD -WithChange | Where {$_.Station -eq "Koh-i-Noor"} | Out-Gopas

čtvrtek 13. listopadu 2008

Školení PowerShell - den čtvrtý

V dopolední části jsme ještě zhruba do jedenácti hodin "dojížděli" modul o souborech. Praktická cvičení na konci byla opravdu ryze praktická a procvičila nás jak v příkazech cyklu a funkcích, tak i v cmdletech pro práci se soubory.

Modul 8, Možnosti .NET Frameworku - na ten jsem se hodně těšil. .NET občas používám ve svých skriptech, ale zatím je to metodou chaosu a pokusů. Ucelenější popis použitelných tříd "nikde" neexistuje (samozřejmě pokud pominu MSDN, kde je vše super popsáno a zatím jsem tam našel vše, co jsem potřeboval). Ukázali jsme si přímý přístup ke třídám a poté jsme se věnovali těm, které jsou pro administrátory užitečné. Nebudu je všechny vyjmenovávat, ale zmínili jsme se například o vzdálené správě služeb nebo připojení do databáze.

Práce s Active Directory byl název Modulu 9. Ukázali jsme si několik způsobů, jak přistupovat do Active Directory přes .NET, ADSI, Quest AD cmdlets a pomocí PSDrive z balíku PSCX. Jinými možnostmi přístupu jsme se nezabývali, což ovšem nebylo na škodu, protože i tak jsme toho měli na probrání, zkoušení a sledování opravdu hodně.

Dnešek byl plný hodně zajímavých věcí a různé upřesňující dotazy a odpovědi byly skvělým kořením.

středa 12. listopadu 2008

Školení PowerShell - den třetí

Tak po dnešku se přesuneme za polovinu kurzu, takže doufám, že začneme s odvážnějšími tématy. Ráno jsme dojeli soubory (CSV, XML), probrali cmdlety Out-* a začali jsme Modul 6 - Řízení běhu skriptu v PowerShellu. Už teď mohu zodpovědně prohlásit, že zas tak úplně podle knihy nejedeme. Slouží spíš jako referenční příručka, kde jsou vysvětleny příklady. Kurz jako takový - a hlavně okamžitou reakci na dotazy - nenahradí.

Začali jsme podmínkami a smyčkami (if, switch, while, foreach, ...) a ukázali si pár příkladů. Vyzkoušeli jsme si umístění větve default v příkazu switch a dostali jsme se do pěkných filosofických debat. Závěrečný příklad na foreach byl moc hezký (vypsat barevně procesy podle alokované paměti) - já ho řešil jako one-liner. Což se mi nevyplatilo hned při dalším cvičení, kdy jsme měli "skript" z předchozí úlohy přepsat jako funkci a předat jí parametr. Takže jsem stejně musel jít do IDE a pracovat v něm. Funkce jsme probrali včetně bloků BEGIN, PROCESS, END a ukázali jsme si tím pádem i práci funkce v rouře. Po funkcích následoval - zcela podle předpokladů - čas věnovaný filtrům.

Modul 7 - Souborový systém a dle názvu jasně určené téma. Zabývali jsme se výpisy (Get-ChildItem), přejmenováním (Rename-Item), kopírováním (Copy-Item), přesouváním (Move-Item) a mazáním (Remove-Item). Závěrečný příklad prověřil skvěle naše znalosti. Mé řešení bylo následující:

$i=1;$d=(get-date -u "%Y-%m-%d"); ls |? {!($_.PSIsContainer)} | sort LastWriteTime |% {rni $_ -n "$d-$i";$i++}

Nerozumíte mu? Přijďte na kurz - pan Malina vás rád uvidí :)

úterý 11. listopadu 2008

Školení PowerShell - den druhý

Ráno jsme začali trošku zlehka krátkou ukázkou některých použitelných PowerShell editorů. Po této "rozcvičce" začala pravá zábava - objekty a Modul 3 - Objektové myšlení a objektově orientované programování.

Vše je objekt - heslo na další hodinu. Vysvětlení začalo standardním popisem "objektu auto" a předvedením jeho vlastností a metod. Toto bylo dále rozvedeno na několika příkladech z reálného (např. dům) i virtuálního (Win32_Share) života. Plynule jsme navázali na cmdlet Get-Member - dle lektorova (i mého) názoru asi nejužitečnějšího z celé škály (trochu odbočka: jeho popis mám už rozpracován a doufám, že se mi podří jej dokončit v několika málo dnech). Trochu jsme naťukli i technologii COM a poté se zanořili zpět do objektů a podívali se na PSbase a jeho bratříčky.

Modul 4 - Roura (pipeline) v PowerShellu neboli začínáme dělat divy :) Na začátek byla popsána výhoda roury a poté rozdíl mezi textovou (*NIX) a objektovou (PS) rourou. Samozřejmě byly ukázány krátké příklady. Celý modul jsme zakončili přehledem příkazů pracujících s objekty v rouře (ForEach-Object, Where-Object, ...).

V Modulu 5 - Tok a ukládání dat v PowerShellu - jsme začali s proměnnými a jejich přiřazováním, přetypováním a různými divokými operacemi. Probrali jsme operátory (+=, -=, ...) a přešli jsme na práci s poli. Přiřazovali jsme různé hodnoty a probírali se indexováním všemi směry. Lehce jsme se dotkli asociativních polí (hešů) a jejich požití při formátování výstupů (např. v příkazu Get-EventLog). Posledním tématem tohoto dne byla práce s textovými soubory. A to jak klasické TXT soubory, tak i využití CSV pro uchovávání objektů a jejich opětovné vyvolávání.

pondělí 10. listopadu 2008

Školení PowerShell - den první

Tak jsem se po dlouhé době dočkal a mohl vyrazit do počítačové školy Gopas na týdenní školení PowerShellu. Kurz vede Patrik Malina velký propagátor non-GUI řešení na platformě Windows. Už jsem u něj absolvoval v Gopasu dvě školení: MOC2433 (základy skriptování ve WSH) a MOC2439 (skriptování pomocí WMI) a zůčastnil jsem se několika jeho přednášek. Jeho styl výkladu je mi velmi blízký a příjemný.

Jak jsem předpokládal, osnova kurzu se bude řídit podle knihy PowerShell - podrobný průvodce skriptováním, jejíž je pan Malina autorem. Všichni účastníci kurzu ji na začátku dostali jako studijní materiál (což mi udělalo radost, protože tu svojí koupenou můžu dál používat jako pracovní a novou mohu dát hezky do knihovny mezi ostatní PowerShell knihy).

Ráno jsme začali lehkým představením prostředí školy a obsahu kurzu. Poté již přišel na řadu Modul 1, který byl nazván Windows scripting concepts and technologies a zabýval se historií ovládání Windows z příkazové řádky a skriptu (cmd.exe, WSH, WMI, PowerShell). Již první příklad postavil před některé z nás zapeklitou úlohu :)

Modul 2 s názvem Zprovoznění PowerShellu a základy práce v prostředí nás již vrhl do víru toho "správného Shellu". Instalace (které předcházel kratičký nástin .NET) a vysvětlení Set-ExecutionPolicy nás před obědem pěkně připravily na odpolední část. Tu jsme začali popisem základního chování konzole: doplňování pomocí klávesy TAB, Verb-Noun, neinteraktivní běh a povídání o historii a přepisu příkazů. Probrali jsme interaktivní režim a podrobněji se podívali i na chování a možnosti přepínačů. Ihned poté jsme se vrhli na $PROFILE a úpravu promptu, což rozpoutalo první složitější dotaz, který byl vzápětí prompt-ně zodpovězen. Ke konci dne jsme se bavili o aliasech a skončili jsme filozofií PSDrives, kde jsme dělali další ze zajímavých příkladů.

neděle 9. listopadu 2008

Get-PSNews |? {$_.CreationTime -lt "7days"}; Write-Host "Týden 45"

Musím říct, že tento týden byl na novinky opravdu bohatý. Nejen, že se ozvývají dozvuky PDC, ale hlavně se v Barceloně konal další TechEd.
  • Windows PowerShell na TechNet Library.
  • V jednom velmi starém příspěvku (v době, kdy bude tento post publikován to bude přesně rok :) jsem našel příklady použití operátoru -f.
  • Krásný one-liner z Jaykulova Twitteru - reakce na americké volby: Get-Conversations| Where{ $_.Topic -eq Politics} | Start-Sleep
    a malý doplněk: They're all lucky, I *was* going to pipe that to | kill -force
  • Sapien uvolnil volně ke stažení PrimalForms spolu s krátkým Getting Started.
  • Další epizoda PowerScripting Podcastu, tentokrát s pořadovým číslem 47.
  • PowerShell for Visio - mazaný nástroj pro generování PS skriptů přes Visio.
  • Tak máme za sebou konečně volbu nového amerického prezidenta. Jak to souvisí s PowerShellem? Konečně se budou na IRC, Twitteru a dalších řešit jiné věci než politika a můžem smazat z $PROFILE tento řádek: Get-Tweet | ? { $_.Message -notmatch "election|president|vote|obama|mccain|palin" } - autor opět Jaykul.
  • PrimalScript 2007 Classroom Edition bude využíván při kurzech Windows Administration and Automation Using PowerShell. Dohodly se na tom firmy Microsoft a SAPIEN.
  • V novém čísle TechNet magazínu tentokrát dva články o PowerShellu: pokračování Building a Better Inventory Tool a v sekci Hey, Scripting guy! Calculating Server Uptime.
  • Známá jména z PowerShell komunity na fotce z TechEdu.
  • Jestli chcete, můžete vyplnit krátký dotazník na PowerShellCommunity.org.
  • Jak na vzdálený EventLog pomocí .NET.
  • Celý příští týden budu na školení PowerShellu v počítačové škole Gopas. Přednášejícím bude Patrik Malina, autor knihy PowerShell - Podrobný průvodce skriptováním (podle které se dle mého názoru "pojede"). Gopas nabízí ještě oficiální MOC kurz, ale já jsem se rozhodl pro tento čistě z důvodů trvání kurzu (pět dní vs. tři MOC).

čtvrtek 6. listopadu 2008

Get-PSNews |? {$_.category -eq "Hot Topic"}

Tato zpráva se svou důležitostí řádí mimo standardní novinky, publikuji ji tedy okamžitě.

Jeffrey Snover oznámil na konferenci Tech-Ed datum zveřejnění Powershellu v2:
  • Prosinec 2008 - CTP3 (nebo Beta 1, pokud bude splňovat všechny náležitosti)
  • RTM - konec 2009/začátek 2010 jako součást Windows 7 a WS08R2
  • RTM pro XP, 2003, Vista a WS08 - jako download o pár měsíců později
Převzato z Dmitry's PowerBlogu.

P.S.: Stejně jak píše Dmitry jsem očekával uvedení o pár měsíců dříve :(

úterý 4. listopadu 2008

PrimalForms - první formulář (first form)

[EN]: This text describes my first form created with PrimalForms tool from Sapien. It is available at Sapien web for free!
As I work as an SMS administrator one of my most often tasks is to run packages for testing on my VM machines. I have PowerShell open whole day and now I can use Set-Alias for calling my version of Run Advertised Programs snapin.
How it works: OnLoad of the form it checks all available programs from UIResource.UIResourceMgr. Then it lists all found in Listbox. When you choose one of the available programs and click to Run, it will run ExecuteProgram method and start the installation.
Note: I didn't test the form in production yet. I also didn't test it for any error states - now it's published just for fun. You are running the code on your own risk!
Available here.


[CZ]: Včera večer uvolnila firma Sapien zdarma nástroj PrimalForms (čímž mi "umožnila" jít spát v jednu ráno :). Začal jsem jej mírně oťukávat a dnes jsem si během několika málo minut (nejvíc času zabral design formuláře) vytvořil svou verzi snapinu Run Advertised programs. Jelikož pracuji jako SMS administrátor používám tento snapin několikrát za den při testování našich balíčků.

Jak vše funguje: Při otevření formuláře načte všechny dostupné programy z UIResource.UIResourceMgr a vloží je do listboxu. Poté, co vyberete jeden z dostupných programů a kliknete na Run, zavolá se metoda ExecuteProgram a program je spuštěn.
Upozornění: Skript jsem zatím testoval pouze ve VM prostředí a nejsou v něm ošetřeny žádné nepředvídatelné okolnosti (ani ty předvídatelné). Zatím je to opravdu jen ukázka práce. Skript spouštíte na vaši vlastní zodpovědnost.
Skript si můžete stáhnout zde.

neděle 2. listopadu 2008

Get-PSNews |? {$_.CreationTime -lt "7days"}; Write-Host "Týden 44"