pátek 29. května 2009

Automatizace a Scripting Games

Dnes ráno mne zaujaly na Twitteru dvě zprávy:
  1. Má smysl automatizovat úplně všechno? Připomíná mi to mé poznámky na prezentacích PowerShelu, když říkám, že ne vždy je PowerShell efektivní. Občas prostě není efektivní vůbec nic kromě manuální práce :) Samozřejmě to neplatí při výrobu skriptů pro studijní účely. Přečtěte si původní článek a jestli chcete, nechte mi zde pod článkem komentář.
  2. Summer Scripting Games 2009 - podrobnější informace byly zveřejněny na novém blogu Hey, Scripting Guy! Letos je mottem vzdělání, nikoli soutěž a všechna témata se budou věnovat desetiboji (vzdělávacímu samozřejmě). Cílem je přiblížit průběh více reálnému světu a bude např. možné použít části kódu jiných soutěžících. Zároveň byly potvrzeny čtyři kategorie - VBScript a PowerShell; oba jazyky pro Beginner a Advanced divizi. 

středa 20. května 2009

Hledání adresářů podle obsahu

Jedna z poznámek na Twitteru mě zavedla ke konzoli PowerShellu. Chtěl jsem si vyzkoušet, jak je jednoduché vyhledat adresáře podle specifického zadání. Konkrétní dotaz zněl: "Chci všechny adresáře začínající písmenem L, které obsahují soubory *.dwg". Dotaz jsem si upravil na "... všechny soubory s příponou PS1, které jsou v adresáři začínajícím na zzz.

Vypadl mi následující one-liner:

ls -i *.ps1 -r | select Directory -u | % {if((Split-Path $_.Directory -le) -like 'zzz*') {$_}}

Lépe je zřejmě čitelný takto:

Get-ChildItem -Include *.ps1 -Recurse | `
Select-Object -Property Directory -Unique |`
ForEach-Object {
if ( (Split-Path $_.Directory -Leaf) -like 'zzz*') { $_ }
}

V první části roury probíhá rekurzivní hledání všech PS1 souborů. Poté vybereme jména všech adresárů a dále hledáme ty, jejichž jméno začíná na zzz. pokud některý podmínku splňuje, tak vypíšeme celou cestu k adresáři.

pondělí 18. května 2009

Scripting Games 2009

Konečně bylo uveřejněno datum letních Scripting Games 2009. Více informací je k nalezení na stránkách Script centra. Vypadá to, že letos se bude soutěžit v PowerShellu a VB Scriptu a Perl tedy zřejmě odpadá. Pokud se chcete dozvědět více, podívejte se na stránky Scripting Games a zapátrejte v archivu.

Letos se na pořádání budou také podílet PowerShellCommunity.org a PoShCode.org.

Profil autora těchto stránek na stránkách Scripting Games (v roce 2007 jsem absolvoval VBS beginners divizi).

čtvrtek 14. května 2009

Hej, mistře Šelíku!

Vítejte zpátky u mistra Šelíka. V posledním TechNet Flash zpravodaji řešil následující problém.

No, dejme tomu - DateDiff je dobrá funkce, ale kdo si má pamatovat, kdy si naposledy měnil heslo. DateDiff (resp. odčítání dvou dat) bych použil v případě, že bych chtěl například zjistit, kolik dní zbývá do Vánoc.

PS C:\> $vanoce = '2009/12/24'
PS C:\> ($vanoce - (get-date)).Days
223

V případě zjištění délky používání hesla je lepší sáhnout přes ADSI na vlastnost PasswordAge.

PS C:\> [ADSI]$user="WinNT://czvm01/administrator,user"
PS C:\> $user.PasswordAge
97399082
PS C:\> ($user.PasswordAge).value/86400
1127,30418981481

První výsledek nám vrátil stáří hesla v sekundách, takže jsme jej přepočítali na dny. Vidíme, že administrátorské heslo na tomto počítači nebylo změněno hodně dlouho :) V případě, že by vás zajímalo stáří hesla pro účet v Active Directory, stačí změnit první řádek na následující variantu:

PS C:\> [ADSI]$user="WinNT://domain.name/administrator,user"

a v proměnné $user budeme mít uložen účet doménového administrátora.

Pokud víte, že informaci o stáří hesla budete využívat častěji, můžete si předchozí kód uložit do skriptu.

function Get-PasswordAge {

param (
[string]$scope = "$env:computername",
[string]$user = "administrator"
)

[ADSI]$ADSIobj="WinNT://$scope/$user,user"
"$user : $([Math]::Round(($ADSIobj.PasswordAge).value/86400))"
}

PS C:\> Get-PasswordAge
1127
PS C:\> Get-PasswordAge -user $env:USERNAME -scope $env:USERDOMAIN
86

Jediným doplněním je závěrečné zaokrouhlení dnů na celá čísla pro lepší přehlednost.

Banner mistra Skriptíka je stažen ze stránek TechNet Flash zpravodaje. Děkuji týmu TechNetu za možnost jeho použití pro potřeby tohoto článku.

úterý 12. května 2009

Update: Hej, mistře Šelíku!

Dnes jsem dostal povolení, že mohu přidávat banner mistra Šelíka do článků na tomto webu (viz např. tento příspěvek).

Banner je součástí českého TechNet Flash zpravodaje, který je dostupný (po registraci) na technetflash.cz. Pokud zpravodaj neodebíráte, mohu vám ho jen doporučit.

Těším se na další setkání s vámi a mistry Skriptíkem a Šelíkem :)

středa 6. května 2009

Windows 7 RC

Jistě nikomu z vás neuniklo, že do světa byla puštěna RC verze Windows 7. Co je ovšem důležité z hlediska PowerShelu, že tím se nám dostává do ruky ve velkém množství kopií PowerShell v2. Já už mám RC stažené a čekám na víkend, abych si s nimi mohl pohrát. Od této chvíle budu více využívat verzi 2 a rád bych přinesl věci, které mne zaujmou.

úterý 5. května 2009

Správa VMware pomocí PowerShellu

V těchto dnech se konečně dostala na trh kniha, na kterou jsem dlouho čekal.

Jedná se o Managing VMware Infrastructure with Windows PowerShell: TFM, kterou napsal Hal Rottenberg. Hal je Microsoft PowerShell MVP a je zároveň VMware vExpert. Obě tato ocenění jej předurčují k tomu, že téma knihy zvládá na té nejvyšší úrovni. Hal je zároveň jedním z moderátorů PowerScripting Podcastu.

Knihu vydalo nakladatelství Sapien Press v edici TFM. Četl jsem z této edice dvě knihy a s oběma jsem byl velice spokojen. Na webu Sapienu jsou ke stažení skripty a zároveň je dostupná ukázková kapitola.

Kniha je již dostupná na Amazonu. V nejbližších dnech si ji budu objednávat :) Pokud se zabýváte správou VMware serveru a chcete vaši práci automatizovat, mohu tuto knihu jen doporučit.

pondělí 4. května 2009

Hlasování - výsledky

Minulý týden doběhlo první hlasování. Otázka byla: "Vadilo by vám, kdyby byl obsah webu v angličtině?" Až do poslední chvíle to vypadalo na remízu, ale pak jeden člověk hlasoval pro Ano. Vzhledem k tomu, že já sám jsem hlasoval pro ne, beru to jako výhru o 15% :)

Rád bych přinášel informace převážně v českém jazyce. Zjistil jsem ovšem, že občas zazní na fóru či Twitteru dotaz, který jsem schopen řešit a rád bych jej publikoval. Proto jsem se již definitivně rozhodl přenést současnou podobu webu na vlastní doménu www.PowerShell.cz a najít providera, který bude schopen nabídnout WordPress jako nástroj pro tvorbu webu. V současné době mám dobré ohlasy na onebit.cz.

Má idea je taková, že PowerShell.cz bude primárně v češtině a v subdoméně en.PowerShell.cz pojede paralelně anglická verze. Mělo by platit, že všechny články, které budou dostupné v angličtině, budou dostupné i v češtině. Opačně to již platit nemusí.