PowerShell
Windows PowerShell, noto precedentemente come Microsoft Shell o MSH (o col nome in codice Monad) è una shell caratterizzata dall'interfaccia a linea di comando (CLI) e da un linguaggio script, sviluppata da Microsoft. Tale prodotto è basato sulla programmazione a oggetti e sul framework Microsoft .NET.
Windows PowerShell 1.0 è disponibile per il download dal sito web Microsoft.
Microsoft intendeva in origine rilasciare PowerShell insieme con Windows Vista, ma in seguito ha definito delle date di rilascio diverse per PowerShell. Windows PowerShell costituisce la base dell'interfaccia amministrativa per Microsoft Exchange Server 2007 dove qualsiasi operazione è svolta tramite linea di comando e l'interfaccia GUI è posizionata su uno strato superiore a detti comandi.
PowerShell necessita della versione 2.0 del .NET Framework ed è supportato su Windows XP, Windows Server 2003, Windows Vista e Windows Server "Longhorn", disponibile nelle edizioni x86, x64 ed Itanium.
Storia
Ogni rilascio di MS-DOS e Microsoft Windows ha sempre incorporato un'interfaccia a riga di comando: command.com nelle versioni basate su MS-DOS, cmd.exe in quelle basate su Windows NT: non erano, però, in grado di riprodurre, o di automatizzare tutte le funzioni amministrative disponibili tramite GUI, sebbene la situazione sia migliorata con Windows Server 2003. Ciò era dovuto ad una combinazione di limitazioni intrinseche agli strumenti equivalenti a linea di comando o al fatto che Microsoft non ha fornito, per lungo tempo, utility affidabili di questo tipo.
Inoltre, a differenza degli ambienti Unix, nè command.com nè cmd.exe rispettano lo standard POSIX.2. Services for UNIX include una pdksh che rispetta tale standard, ma sia questa che altre shell UNIX che sono disponibili non sono in grado di compiere molti compiti di routine, che restano legati all'interfaccia grafica di Windows. Sebbena la suite di servizi per UNIX faccia ora parte di Windows Server 2003 R2, e sarà inclusa in alcune edizioni di Windows Vista, essa era, in passato, resa disponibile come componente aggiuntivo a pagamento, cosa che ne impedì l'adozione su larga scala.
Gli utenti sono stati allontanati dalla mancanza di documentazione adeguata delle funzionalità a linea di comando. Per covnerso, molte applicazioni grafiche in Unix sono solo wrapper per tool a riga di comando, che sono corredati di documentazione.
Microsoft tentò di porre rimedio ad alcune di queste limitazioni introducendo Windows Script Host nel 1998, in concomitanza col rilascio di Windows 98. Si trattava di un nuovo livello di scripting che poteva implementare un buon numero di linguaggi di scripting per controllare le applicazioni. Tuttavia, lo Script Host aveva anche significative limitazioni: non era integrato con la shell, la sua documentazione non era molto accessibile, e fu presto considerato un pericolo per la sicurezza del sistema, dopo che diversi virus misero in luce la debolezza sostanziale del suo modello di sicurezza.
Windows Server 2003 e alcune versioni di Windows XP includono un host per script a linea di comando denominato Cscript.exe (si tratta, essenzialmente, di una porzione autonoma del Windows Script Host di cui sopra), non integrato con la shell preesistente (cmd.exe). Questi sistemi operativi forniscono anche altre righe di comando ad hoc (ad esempio netsh), anch'esse non del tutto integrate.
Una limitazione fondamentale all'automatizzazione dei task in Windows era il fatto che le sue interfacce di amministrazione native erano aperte ai tool grafici proprietari di Microsoft, e ad ogni interfaccia di script che Microsoft poteva scegliere di fornire. Poichè la GUI costituiva l'interfaccia primaria, risultava difficile fornire "wrapper" in grado di essere inseriti in degli script - una situazione che è esattamente agli antipodi di quella della maggior parte delle implementazioni di UNIX, in cui una linea di comando in grado di eseguire degli script forniva le funzionalità base.
Microsoft progettò PowerShell per rendere meno insormontabili questi problemi, e per rendere meno oneroso il processo di sviluppo di nuove applicazioni grafiche ed a linea di comando integrando un linguaggio di scripting più sicuro in un nuova shell di comando estendibile, che fosse in grado di svolgere ed automatizzare gli stessi compiti amministrativi fondamentali che vengono svolti tramite interfaccia grafica in Windows. L'interfaccia utente di gestione di Exchange Server 2007, per esempio, si basa su PowerShell. Nella maggior parte dei compiti di tutti i giorni, PowerShell può sostituire cmd.exe e Windows Script Host (WSH). Tuttavia, per motivi di retrocompatibilità, sia cmd.exe che WSH continueranno ad essere supportti da Windows. Microsoft si è impegnata a costruire i tool grafici del futuro sopra PowerShell, assicurandosi che le funzionalità amministrative di base continuinino ad essere utilizzabili tramite linea di comando, sulla falsariga di un sistema operativo Unix.
Microsoft ha pubblicato la seconda beta pubblica di "Monad" l'11 Settembre 2005, mentre la terza è stata rilasciata il 10 Gennaio 2006.
Microsoft ha annunciato il 25 Aprile 2006 che WSH avrebbe cambiato nome in Windows PowerShell
Esempi
- Arresta tutti i processi che iniziano con la lettera "p":
PS> get-process p* | stop-process
- Trova i processi che utilizzano più di 10 MB di memoria e arrestali:
PS> get-process | where { $_.WS -gt 10MB } | stop-process
- Calcola il numero di byte occupati dai file di una directory:
PS> get-childitem | measure-object -property length -sum
- Determina se un processo specifico è o meno ancora in esecuzione:
PS> $processToWatch = get-process notepad PS> $processToWatch.WaitForExit()
- Cambia una stringa da minuscolo a maiuscolo:
PS> "hello, world!".ToUpper()
- Inserisce la stringa "ABC" dopo il primo carattere della parola "string" così da ottenere "sABCtring":
PS> "string".Insert(1, "ABC")
- Scarica un feed RSS specifico e visualizza gli 8 titoli più recenti:
PS> $rssUrl = "http://blogs.msdn.com/powershell/rss.aspx" PS> $blog = [xml](new-object System.Net.WebClient).DownloadString($rssUrl) PS> $blog.rss.channel.item | select title -first 8
Riferimenti
Bibliografia
- Bruce Payette, Windows PowerShell in Action, ISBN 1-932394-90-7.«a founding member of the Windows PowerShell team and one of the key designers of the Windows PowerShell language»
- Andy Oakley, Monad - Introducing the MSH Command Shell and Language (the Toad book, ISBN 0-596-10009-4.
- Don Jones, An Introduction to Microsoft PowerShell.
- Don Jones, Jeffery Hicks, Windows PowerShell: TFM, ISBN 0-9776597-1-2.
- Lee Holmes, Windows PowerShell Quick Reference, ISBN 0-596-52813-2.«a developer on the Windows PowerShell team»
- Jerry Lee Ford Jr, Microsoft Windows Powershell Programming for the Absolute Beginner, ISBN 1-59863-354-6.
- Andrew Watt, Professional Windows PowerShell, ISBN 0-471-94693-1.«Windows PowerShell MVP»
Collegamenti esterni
- Homepage di PowerShell
- Channel9 Monad Interviews/Demos con Jeffrey Snover - l'Architetto di Windows PowerShell
- TechNet Script Center Interview with Jeffrey Snover - l'Architetto di Windows PowerShell
- Monad: The Future of Windows Scripting - an article in TechNet Magazine by Thomas Lee.
- Future Windows component could spur old-school script viruses - Monad's role in future security concerns, by Paul Roberts, IDG News Service
- Monad and the "First Vista Virus", a clarification by Lee Holmes, a developer on the Windows PowerShell Team
- Scripting with Windows PowerShell
- Windows PowerShell Team Blog
- The PowerShell Wiki, a collection of useful scripts for the newcomer as well as the advanced user
- Example of a commercial Windows PowerShell editing environment
- Oracle Data Provider for .NET under PowerShell
- How Windows PowerShell Works