Condividi tramite


Snap-in di PowerShell: Uso dei cmdlet basati su attività dello snap-in di PowerShell IIS

di Thomas Deml

Introduzione

I cmdlet snap-in di IIS PowerShell possono essere raggruppati in tre categorie:

  • I cmdlet richiesti dalla gerarchia del provider
  • cmdlet di configurazione di basso livello
  • Cmdlet basati su attività

Questa procedura dettagliata presenta il cmdlet IIS basato su attività e fornisce alcuni esempi su come usarli.

Cmdlet richieste dalla gerarchia del provider

IIS ha deciso in anticipo di rendere disponibile la configurazione iis come gerarchia di siti, applicazioni, directory virtuali e pool di applicazioni. Il vantaggio è che i clienti possono passare a una posizione, ad esempio un sito o un'applicazione, nella gerarchia e impostare le impostazioni in questo contesto. Per supportare una gerarchia di spostamento, è necessario implementare alcuni cmdlet di PowerShell predefiniti, ad esempio New-Item, Set-ItemProperty e così via. La gerarchia e questi cmdlet predefiniti sono stati forniti in Tech Preview 1 nel mese di aprile 2008.

Cmdlet di configurazione a bassa complessità

Il sistema di configurazione IIS è stato completamente modificato nella versione 7. Il nuovo sistema di configurazione è completamente basato su XML, basato su schema ed estendibile completamente. Il nuovo server FTP IIS (FTP7) e molti altri moduli IIS, ad esempio il rewriter URL, WebDAV e così via, sfruttano questa estendibilità per collegarsi al sistema di configurazione IIS.

Questa estendibilità rende difficile spedire i cmdlet con argomenti statici. Si supponga che il caso in cui qualcuno estenda una sezione di configurazione esistente, ad esempio qualcuno aggiunge una proprietà myFancyNewBehavior alla sezione di configurazione virtualDirectory. Senza rivedere i cmdlet di IIS, l'impostazione fancyNewBehavior non sarebbe configurabile tramite i cmdlet snap-in di PowerShell.

Technical Preview 1 dello snap-in di IIS PowerShell includeva solo cmdlet a basso livello, tenendo conto dell'estendibilità totale della configurazione. Ogni impostazione di configurazione iis (più di 100 sezioni di configurazione con raccolte, enumerazioni e così via) può essere configurata usando questi cmdlet. Questi cmdlet di basso livello funzionano anche con la configurazione personalizzata, ad esempio se si è estesa la configurazione IIS con la propria sezione di configurazione.

Di seguito è riportato l'elenco dei cmdlet di basso livello forniti a partire da Tech Preview 1 di aprile 2008:

Add-WebConfiguration                                                                               
Add-WebConfigurationProperty                                                                       
Begin-WebCommitDelay                                                                                  
Clear-WebConfiguration                                                                             
End-WebCommitDelay                                                                                    
Get-WebURL                                                                                            
Get-WebConfiguration                                                                               
Get-WebConfigurationProperty                                                                       
Get-WebItemState                                                                                   
Remove-WebConfigurationProperty                                                                    
Restart-WebItem                                                                                    
Set-WebConfiguration                                                                               
Set-WebConfigurationProperty   
Select-WebConfiguration                                                             
Start-WebItem                                                                                      
Stop-WebItem

Cmdlet orientati al compito

Ecco le notizie interessanti. Per le attività quotidiane di IIS, come la creazione di siti web, l'abilitazione della traccia delle richieste, l'aggiunta di un gestore o di un modulo, potrebbe essere utile utilizzare i cmdlet task-based inclusi nello snap-in IIS PowerShell. Di seguito è riportato un elenco dei cmdlet basati su attività:

Add-WebConfigurationLock
Backup-WebConfiguration
Clear-WebRequestTracingSettings
ConvertTo-WebApplication
Disable-WebGlobalModule
Disable-WebRequestTracing
Enable-WebGlobalModule
Enable-WebRequestTracing
Get-WebAppDomain
Get-WebApplication
Get-WebAppPoolState
Get-WebBinding
Get-WebConfigFile
Get-WebConfigurationBackup
Get-WebConfigurationLocation
Get-WebConfigurationLock
Get-WebFilePath
Get-WebGlobalModule
Get-WebHandler
Get-WebItemState
Get-WebManagedModule
Get-WebRequest
Get-Website
Get-WebsiteState
Get-WebURL
Get-WebVirtualDirectory
New-WebApplication
New-WebAppPool
New-WebBinding
New-WebFtpSite
New-WebGlobalModule
New-WebHandler
New-WebManagedModule
New-Website
New-WebVirtualDirectory
Remove-WebApplication
Remove-WebAppPool
Remove-WebBinding
Remove-WebConfigurationBackup
Remove-WebConfigurationLocation
Remove-WebConfigurationLock
Remove-WebGlobalModule
Remove-WebHandler
Remove-WebManagedModule
Remove-Website
Remove-WebVirtualDirectory
Rename-WebConfigurationLocation
Restart-WebAppPool
Set-WebBinding
Set-WebGlobalModule
Set-WebHandler
Set-WebManagedModule
Start-WebAppPool
Start-Website
Stop-WebAppPool
Stop-Website

Guida per i cmdlet basati su attività

"Usare il sistema di aiuto integrato è il modo più semplice per scoprire quali cmdlet sono disponibili e come usarli." Il comando seguente elenca tutti i cmdlet IIS.

get-command -pssnapin WebAdministration

Un altro modo consiste nel cercare il prefisso -Web che usiamo per tutti i cmdlet di IIS. Provare questo comando:

get-command *-Web*

Il sistema della Guida predefinito fornisce una descrizione rapida di un singolo cmdlet, dei parametri e degli argomenti che può accettare e contiene esempi di utilizzo del cmdlet. Provare quanto segue:

get-help New-WebSite

Per ricevere la guida completa su un cmdlet specifico, è possibile immettere quanto segue:

get-help New-Website -full

Se si vuole visualizzare solo un esempio di come usarlo, provare il comando seguente:

get-help New-Website -example

Esempio end-to-end

La potenza dei cmdlet basati su attività si manifesta quando vengono usati per uno scenario end-to-end. Nell'esempio seguente si creerà un nuovo sito Web, si aggiungeranno alcuni contenuti al sito Web, si apportano alcune modifiche di configurazione, si abiliterà Traccia richiesta e richiederà la nuova pagina di contenuto.

Passaggio 1: Creazione di un nuovo sito Web

Immettere i comandi seguenti:

PS IIS:\>mkdir "$env:systemdrive\inetpub\MyNewWebSite"

Verrà creata una nuova directory fisica per il nuovo sito.

PS IIS:\>New-Website -name "MyNewWebSite" -PhysicalPath "$env:systemdrive\inetpub\MyNewWebSite" -port 81

La riga precedente crea un nuovo sito Web che punta alla directory appena creata e su porta 81.

Passaggio 2: Aggiunta di contenuto al sito

I comandi seguenti consentono di spostarsi nello spazio dei nomi IIS e di creare un nuovo file di contenuto.

PS IIS:\>cd IIS:\sites\MyNewWebsite

Il comando precedente passa al nodo MyNewWebSite nello spazio dei nomi IIS.

PS IIS:\Sites\MyNewWebSite> dir

Il comando precedente elenca tutti i contenuti del nuovo sito Web. Non mostrerà nulla perché non c'è contenuto.

PS IIS:\Sites\MyNewWebSite> notepad "$(Get-WebFilePath .)\test.htm"

Il comando precedente apre il Blocco note e consente di modificare test.htm. Invece di dover ricordare dove si trova il percorso fisico del sito Web. Immettere del testo, ad esempio "Hello World" e salvare il file nel Blocco note.

PS IIS:\Sites\MyNewWebSite> dir

Se si immette di nuovo il comando dir, verrà visualizzato il file appena creato test.htm.

PS IIS:\Sites\MyNewWebSite> Get-WebURL -content ".\test.htm"

Il comando precedente eseguirà una richiesta HTTP al sito Web appena creato e restituirà il contenuto immesso nel Blocco note.

Passaggio 3: Abilitazione della traccia delle richieste

IMPORTANTE: per questo esempio è necessario abilitare la funzionalità di traccia IIS. In Windows Vista aprire il Pannello di controllo, fare clic su "Programmi", selezionare "Attiva o disattiva funzionalità di Windows". Trovare e selezionare "Tracing" in "Internet Information Services", "World Wide Web Services", "Health and Diagnostics" (Integrità e diagnostica) e fare clic su "OK".

Come ultimo passaggio si abilita la traccia delle richieste. Web Request Tracing è una funzionalità IIS che consente di ottenere un log dettagliato di ciò che è accaduto durante l'esecuzione di una richiesta. Questa funzionalità è estremamente utile per molti scenari di risoluzione dei problemi. Per abilitare La traccia delle richieste Web è sufficiente eseguire un altro cmldet compatibile con la posizione denominato Enable-WebRequestTracing.

PS IIS:\Sites\MyNewWebSite> Enable-WebRequestTracing

Esaminiamo ora il file web.config quale configurazione è stata scritta dal cmdlet Enable-WebRequestTracing. A tale scopo, usare il cmdlet Get-WebConfigFile che riconosce anche la posizione:

PS IIS:\Sites\MyNewWebSite> notepad (Get-WebConfigFile)

La configurazione è simile alla seguente:

Contenuto del file di web.config

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <tracing>
            <traceFailedRequests>
                <add path="*">
                    <traceAreas>
                        <add provider="ASPNET" areas="Infrastructure,Module,Page,AppServices" verbosity="Verbose" />
                    </traceAreas>
                    <failureDefinitions timeTaken="00:00:30" statusCodes="200-500" verbosity="Warning" />
                </add>
            </traceFailedRequests>
        </tracing>
    </system.webServer>
</configuration>

La configurazione fondamentale è la regola "failureDefinitions". Per impostazione predefinita, viene generato un file di traccia quando il codice di errore è compreso tra 200 e 500 o quando la richiesta richiede più di 30 secondi. Eseguire una richiesta che genera una risposta nell'intervallo di errori 200-500 eseguendo il comando seguente:

PS IIS:\Sites\MyNewWebSite>Get-WebURL -url http://localhost:81/URL_DOES_NOT_EXIST

Una richiesta a una risorsa non esistente genera un errore 404. Per esaminare il file di traccia, è necessario passare al percorso seguente:

PS IIS:\Sites\MyNewWebSite>cd "$env:systemdrive\inetpub\logs\failedReqLogfiles\w3svc2\"

A questo punto è possibile esaminare il file di traccia aprendo il file xml in Internet Explorer:

PS C:\inetpub\logs\FailedReqLogFiles\W3SVC2>&"$env:programfiles\Internet Explorer\iexplore.exe" "$env:systemdrive\inetpub\logs\failedReqLogfiles\w3svc2\fr000001.xml"

Sommario

I nuovi cmdlet basati su attività offrono agli amministratori un modo semplice per eseguire attività IIS quotidiane con PowerShell. I cmdlet offrono consapevolezza della posizione e una sintassi intuitiva e un aiuto.

I cmdlet IIS di basso livello forniti dal Tech Preview 1 consentiranno comunque attività di amministrazione IIS più avanzate.