Monad: una shell DOS simil Unix
Il suo nome in codice è Monad, ma è anche noto come MSH (Microsoft Shell), ed è nata per essere la nuova shell DOS di Windows Vista in grado di supportare una nuova gamma di script che permetteranno ad esempio di riorganizzare file e cartelle in base a precisi criteri, oppure controllare lo stato di un server Exchange e molto altro ancora.
Di fatto, Monad va a mutuare quanto viene già fatto con la shell di Unix o Linux. Il vantaggio di utilizzare dei semplici script rende semplice la condivisione di codice e di comandi su Internet o nelle intranet.
Una versione beta di Monad per Windows XP può essere scaricata a questo indirizzo (poco più di 1 MB, richiede .NET Framework 2.0 Beta 2).
In realtà, da voci non ufficiali Microsoft Corp. dice che questa innovativa command shell non verrà purtroppo rilasciata con il nuovo Windows Vista. Il Senior Vice President di Microsoft, Bob Muglia infatti, in occasione del Tech Ed USAv2005, ha dichiarato che lo sviluppo di Monad porterà via un tempo che va dai 3 ai 5 anni di sviluppo e rilascio di questa nuova interfaccia.
Le principali caratteristiche sono:
- è scritta in .Net (framework 2.0)
- Object Oriented (gli oggetti sono, ovviamente, istanze di tipi .NET che il motore di MSH si preoccupa di serializzare e trasferire)
- funziona con Windows Xp / Windows 2003
- e’ compatibile con commandi DOS/Unix
- capacità avanzate di scripting
- estensibilità dei comandi per creare script complessi, ’shell tools’ e cmdlet ( in C# , vb.net, etc )
- Object Manipulation tramite utilizzo del pipe (ridirigere l’output di un comando verso l’input di un altro)
- Controllo dei dati/periferiche del sistema
- Potenti strumenti di aliasing e output formatting (per reportistica o analisi)
- Documentazione in linea (get-help) molto simile alla ‘man’ di unix.
Comandi base:
get-command
oppure chiamare l’help di un comando tramite
get-help comando
per velocizzare la scrittura del comando get-help, molto utile, utilizzare gli alias.
new-alias man get-help
man comando
in questo modo avremo l’alias ‘man’ che ci restituirà l’help di un comando.
Processi & Servizi
get-process | group-object company
resituirà l’elenco dei processi ragguppati per ‘Company’
get-process | group-object company | convert-HTML | out-file c:\report.html
la stessa cosa esportata in un documento html consultabile sul browser.
get-process | where { $_.vs -gt 200000000} | stop-process -whatif
con ‘whatif’ andremo a compiere una determinata azione solo se la condizione della where risulta vera.
In questo caso andremo a stoppare quei servizi che occupano più di 200000000 di ‘Virtual Memory Size’.
get-service s*
Lista dei servizi che iniziano con la s*
gps lsass | get-member | out-printer
Andremo a stampare, sulla stampante predefinita, la get-member (enumera tutti metodi, proprietà e informazione di tipi utilizzati da quall’oggetto) del servizio lsass.
Contenuti , file, drive.
get-item C:\Test1\Apr04.doc
La vecchi Dir rivista e migliorata ci permette di visualizzare gli ‘elementi’
get-item C:\Test1\Apr04.doc | format-list
get-item C:\Test1\Apr04.doc | format-list|out-file c:\test1.txt
tramite la format, formattiamo l’output per poi ridirigerlo ancora verso file di testo o documenti html
get-drive
ci permetterà di visualizzare le informazioni di un drive quali credential, currentLocation,Name,Provider, Root e driveInfo.
Come per il disco anche il registry viene caricato nello stesso modo.
get-content
la vecchia ‘edit’ con potenzialità di elaborare file di testo e non solo, qualche esempio.
a.txt (1,1,1,1,2,3,4,5,6,7,6,6,7,7,8)
get-content c:\a.txt | get-unique | sort
avremo la lista in ordine numerico, dei valori unici del file di testo richiamato.
get/process | where “handlecount -gr 400″ | sort handlecount | format/table processname,handlecountYou get:
ProcessName HandleCount
—————- —————
processname handlecount
… …
Questo e molto altro sarà possibile con Monad.
Questa è solamente una piccola dimostrazione di cosa si può fare, per dare l’idea dei comandi base, ma ci si potrà rendere conto da soli , digiando get-command, di quanto sia vasta questa nuova shell.
Come pensiero personale posso dire che mi sembra un grande passo avanti da parte di Microsoft, che sembra volersi finalmente avvicinare al mondio ’shell’ per dare la possibilità, a chi lo desidera, di usufruire di tutte le funzionalità del sistema operativo (client e server) e di amministrare il tutto da shell.
Credo anche molto nella nascita di repository pubblici dove depositare i propri script (cmdlet) e creare una fitta rete di share della conoscenza che potrebbe farci risparmiare molto tempo durante le ‘attività’ comuni di amministrazione dei nostri sistemi.
( Tratto da SysAdmin e PC Open)





