15/10/2009

Recuperare la versione di IIS installata

A cura di Efran Cobisi
Tag: IIS, Network


Grazie alla potente integrazione con WMI ed Active Directory, Windows PowerShell consente di recuperare facilmente ed in poche righe di script la maggior parte delle informazioni esposte da Internet Information Services e rende automatizzabili molte delle operazioni di gestione più diffuse tra chi amministra il web server di casa Microsoft.

In questo snippet eviteremo di addentrarci nelle potenzialità offerte dallo snap-in PowerShell compreso con IIS 7.0 ma ci limiteremo a recuperare tramite ADSI forse la più semplice delle informazioni esposte da IIS, la versione del prodotto.

Recuperare un riferimento ADSI ad IIS in PowerShell è semplice come effettuare il casting esplicito da una stringa, che rappresenta il path di destinazione, all'adattatore di tipo ADSI. Gli adattatori di tipo sono dei costrutti esistenti all'interno del linguaggio di scripting che consentono, di fatto, la conversione da un tipo ad un altro. Nel nostro caso, la shell "convertirà" una stringa nel tipo .NET System.DirectoryServices.DirectoryEntry, istanziando un oggetto di quest'ultimo.

Più facile a farsi che non a dirsi, la funzionalità è implementabile in una riga di codice:

$iis = [ADSI]"IIS://localhost/W3SVC/INFO"

Fatto questo, l'oggetto $iis consentirà di accedere alle informazioni esposte dall'Internet Information Services installato nella macchina indicata (localhost nell'esempio); stando ad MSDN, questo tipo di funzionalità è disponibile a partire da IIS 5.1.
L'elenco delle informazioni e delle operazioni esposte da questo oggetto sono disponibili sul sito Microsoft TechNet, a questo link.

Tra le proprietà recuperabili dall'oggetto, sfruttiamo infine le due che consentono il recupero del numero di versione major e di quello minor, rispettivamente MajorIisVersionNumber e MinorIisVersionNumber:

$iis.MajorIisVersionNumber.Value $iis.MinorIisVersionNumber.Value

Volendo creare una semplice funzione, che chiameremo Get-IisVersion, potremo infine raggruppare i valori trovati in una struttura più adatta allo scopo, come System.Version.

Ecco, dunque, lo script definitivo:

function Get-IisVersion($target = 'localhost') { $iis = [ADSI]"IIS://$target/W3SVC/INFO" $version = New Version($iis.MajorIisVersionNumber.Value, $iis.MinorIisVersionNumber.Value) return $version; }

Richiamabile così:

Get-IisVersion SERVER01
Commenti

Nessun commento disponibile.