PowerShell

shell e linguaggio di programmazione ideata da Microsoft Corporation
Versione del 5 apr 2007 alle 14:21 di Gsdefender2 (discussione | contributi) (+pezzetto di testo)

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

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

Collegamenti esterni