Publikoval Michal Kočí dňa 8.6.2006 o 01:37 v kategórii PowerShell
Keďže som konečne po štátniciach, nastal čas aby som rozširoval svoje obzory a dnes som sa pustil do prvého zaujímavého produktu na ktorý som dlhšie nemal čas, i keď som sa mu už na zúbky veľmi zbežne pozeral. PowerShell, predtým Monad Shell, je nový Shell pre Windows, zatiaľ len v Beta verzii. Tento krátky príspevok sa Vás bude snažiť aspoň trocha presvedčiť, že za stiahnutie a vyskúšanie rozhodne stojí.
V PowerShelly (PS) ide všetko ozaj tak nejak jednoducho a ľahko. Ak ste zvyknutý si substituovať disky (príkaz subst v starom dobrom Cmd Shelly), toto sa dá aj v PS, bohužial sa substovanie neodrazí v celom systéme, ale iba v danej inštancii Shellu. Zato však nie ste obmedzený iba na substitúciu diskov, ale môžete si substituovať aj prístup do registrov. Navyše, názov nového "drive-u" nemusí byť jediné písmeno, ale môže to byť celé slovo či jeho skratka. Namapovanie adresára .Net Frameworku pod názvom nwf je takto jednoduché:
new-Psdrive -Name nfw -PSProvider FileSystem ` -Root "c:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\"
Ak pred spustením CmdLet-u (CommandLet-u) chcete vedieť čo sa vykoná, môžete použiť parameter WhatIf, ktorý zabezpečí, že sa CmdLet nevykoná ale iba vypíše čo by vykonal. Napríklad pred mazaním súborov spustite CmdLet s uvedeným parametrom:
Remove-Item *.txt -WhatIf
a zobrazí sa Vám textový popis akcií ktoré sa vykonajú ak bude príkaz pustený "naostro":
What if: Performing operation "Remove File" on Target "C:\003.txt". What if: Performing operation "Remove File" on Target "C:\graph.txt".
V PS je možné vytvárať inštancie COM komponentov. Keďže ma lepší príklad nenapadol, uvádzam ten ktorý je všeobecne zobrazovaný aj v popise PS - vytvorenie inštancie Internet Explorera, načítanie stránky a zobrazenie okna aplikácie:
$ie = new-object -com internetexplorer.application $ie.navigate2("http://blog.michalkoci.com/") $ie.visible = $true
V PS sa pracuje s objektmi a týmto je možné pridávať nové členy. Príklady a krátky popis si môžete pozrieť v Jáchymkovom blogu v príspevkoch Dynamicke pridavani memberu a Deklarativni pridavani memberu.
A keďže sa v PS pracuje s objektami, je možné volať ich metódy. Tak môžete nad objektom typu ServiceController ziskaným CmdLet-om Get-Service zavolať metódu Stop a tak danú službu zastaviť. Ak neviete akého typu je daný objekt, môžete typ zistiť zavolaním metódy GetType:
$rs = Get-Service ReportServer $rs.GetType().Name $rs.Stop()
Volať je možné aj statické metódy a pristupovať k satickým členom. Ak chcete zistiť aktuálny dátum a čas, môžete použiť CmdLet Get-Date alebo tento priamo zistiť prečítaním statickej vlastnosti Now triedy DateTime:
[DateTime]::Now
To bolo len zopár pikošiek, PowerShell je ozaj silný nástroj a za vyskúšanie rozhodne stojí. Ak si ho chcete vyskúšať tak si stiahnite:
Ak Vás PS zaujme isto zhliadnite nasledujúce weby a príspevky, ktoré sa PS venujú:
Ak nechceš premeškať príspevky ako je tento, sleduj ma na Twitteri, alebo ak máš RSS čítačku, môžeš sledovať môj RSS kanál.