
A quanto dice Microsoft Corp. questa innovativa command shell non verrà rilasciata
con il nuovo Windows Vista, come promesso.
Il Senior Vice President di Microsoft, Bob Muglia, 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.
Monad, noto anche come MSH (Microsoft Shell), è comunque installabile e utilizzabile scaricandola dal portale Microsoft all’indirizzo :
Windows “Monad” Shell Beta 2 (for .NET Framework 2.0 RC/RTM) x86
http://www.microsoft.com/downloads/details.aspx?FamilyID=766E6908-354D-44D4-80FD-73E172B8E85D&displaylang=en
avendo prima installato il framework 2.0
.NET Framework Version 2.0 Redistributable Package (x86)
http://www.microsoft.com/downloads/details.aspx?FamilyID=0856eacb-4362-4b0d-8edd-aab15c5e04f5&DisplayLang=en
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.
Ed ora un po’ di pratica.
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.
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.