Monad Shell - revolúcia v skriptovaní?

Publikoval Michal Kočí dňa 05.10.2005 o 00:04 v kategórii PowerShell

Monad Shell. Nový shell pre Windows, ktorý svojou silou úplne predbieha stávajúci Windows CMD Shell...

Monad Shell je postavený na inom princípe ako CMD Shell. Kým CMD Shell a kopec ďaľších shell-ov (vrátane linuxových ako napríklad Bash apod.) nie je postavený na výmene textov medzi procesmi (príkazmi), ale je postavený na práci s objektmi.

Monad neobsahuje príkazy, ale CommandLet-y (CommandLet, CmdLet). CmdLet nie je žiadny Exe súbor, ale inštancia .Net triedy, takže ak si potrebujete funkcionalitu Monad Shellu rozšíriť, nemal by to byť pre Vás veľký problém. Monad Shell však poskytuje veľa už pripravených CmdLet-ov (napríklad Get-Process, Set-Location, Get-Drive apod).

Medzi hlavné vlastnosti Monad Shell-u patria:

  • podpora presmerovania výstupu (presmerovanie výstupu jedného CmdLet-u druhému CmdLet-u)
  • podpora premenných (globálne, lokálne, súkromné, ...)
  • možnosť volania metód objektov
  • možnosť tvorby vlastných funkcií
  • podpora práce s poliami (napríklad pole čísiel)
  • podpora práce so slovníkmi (dvojica kľúc-hodnota)
  • podpora podmienkových výrazov - if, switch
  • podpora cyklov - for, foreach, while
A mnoho ďaľšieho...

Jeden príklad za všetky. Zabitie všetkých procesov, ktoré majú v názve "cmd":

Get-Process | where { $_.ProcessName -eq "cmd" } | Select-Object Id | Stop-Process

Najprv zistíte všetky bežiace procesy, vyfiltruje z nich iba tie, ktoré majú v názve "cmd", z vlastností objektov si vyberiete iba identifikátor procesu a ten pošlete CmdLet-u Stop-Process, ktorý procesy s danými identifikátormi zastaví.

Ak som Vás navnadil, stiahite si betu 2 Monad Shellu a potom aj dokumentáciu.

Mohlo by ťa tiež zaujímať

Páčil sa ti príspevok?

Zdieľaj príspevok alebo si ho odlož na neskôr

Sleduj ma

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.

Komentáre

Chybička dňa 05.10.2005 o 08:05 - RE: Monad Shell - revolúcia v skriptovaní?

where { $_.ProcessName -eq "cmd" } by malo byť "asi" where { $_.ProcessName.IndexOf("cmd") -gt 0 } aby to naozaj filtrovalo tie čo majú v názve cmd nie len tie čo majú názov cmd

Mifko dňa 05.10.2005 o 10:07 - RE: Monad Shell - revolúcia v skriptovaní?

povodne som chcel napisat ze to sluzi na vyhladanie procesov ktorych nazov sa rovna "cmd", len som sa nejak sekol, cize mate samozrejme pravdu inak, na vyhladanie procesov, ktore v nazve obsahuju (teda sa nemusi nazov rovnat) "cmd" sa moze pouzit: where { $_.ProcessName -like "*cmd*" }

Pridať komentár

Máš niečo zaujímavé povedať k článku? Pridaj to k článku ako komentár. Spam, reklamu alebo inak nerelevantné komentáre okamžite mažem.

Pridanie komentára sa nepodarilo. Oprav si prosím chyby.