22/02/2008
Creare un mini-webserver di emergenza da script
Grazie alla completa integrazione con il framework .NET, Windows PowerShell espone una vastissima gamma di funzionalità pronte all'uso, alla pari dei cugini linguaggi di sviluppo C# e VisualBasic .NET.
Raccogliendo la sfida lanciata in un blog nei giorni scorsi, in questo snippet dimostriamo quanto sia facile, semplice, ordinato e coerente sviluppare una sorta di server web in formato ridotto, capace di rispondere a qualsiasi richiesta sempre e soltanto con una pagina HTML statica, definita all'interno dello script stesso.
# Creazione ed avvio del listener HTTP (locale, porta 12345)
$httpListener = New-Object Net.HttpListener
$httpListener.Prefixes.Add("http://localhost:12345/")
$httpListener.Start()
# Ciclo di ricezione delle connessioni in entrata
while ($true)
{
# Recupero del contesto HTTP
$httpContext = $httpListener.GetContext()
$httpResponse = $httpContext.Response
# Aggiunta degli header allo stream di risposta HTTP
$httpResponse.Headers.Add("Content-Type", "text/html")
$httpResponse.Headers.Add("Server", "PowerShell/1.0")
# Scrittura del corpo dell'output
$writer = New-Object IO.StreamWriter($httpResponse.OutputStream, [Text.Encoding]::UTF8)
$writer.Write('<html><body>Cosa fai qui? Corri a ')
$writer.Write('visitare <a href="http://www.powershell.it">powershell.it</a>! :)')
$writer.Write('</body></html>')
$writer.Close()
}
# Chiusura del listener HTTP (comunque forzata da CTRL+Break)
$httpListener.Stop()