Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
di Thomas Deml
Le procedure dettagliate precedenti illustrano come eseguire query e modificare le impostazioni di configurazione di IIS. Esiste tuttavia un'area inesplorata: dati in fase di esecuzione.
Introduzione
Le cose cambiano, IIS non è diverso. I siti vengono avviati o arrestati, i pool di applicazioni vengono riciclati o vanno in timeout, le richieste arrivano e le risposte vengono inviate, i domini applicativi vengono creati o arrestati. IIS implementa un'interfaccia denominata RSCA (API di stato e controllo di runtime) che consente di monitorare le attività del sistema.
Lo snap-in di IIS PowerShell utilizza questa interfaccia ed espone alcuni dei suoi dati tramite lo spazio dei nomi dello snap-in di IIS. Lo stato di Siti e pool di applicazioni è configurabile tramite i cmdlet Get-WebItemState, Start-WebItem, Stop-WebItem e Restart-WebItem. Lo stato di runtime, come i processi di lavoro attualmente in esecuzione, le richieste attualmente in corso e gli AppDomains caricati, viene esposto tramite lo spazio dei nomi IIS.
Questa procedura dettagliata usa i siti, le applicazioni e le directory virtuali creati in una procedura dettagliata precedente.
Siti e stato del pool di applicazioni
Iniziamo eseguendo una query sullo stato dei nostri siti web.
Stato sito
PS IIS:\> cd Sites
PS IIS:\Sites> Get-WebItemState IIS:\Sites\DemoSite
Started
L'arresto di DemoSite può essere ottenuto con il cmdlet Stop-WebItem:
PS IIS:\Sites> Stop-WebItem DemoSite
PS IIS:\Sites> Get-WebItemState IIS:\Sites\DemoSite
Stopped
L'avvio funziona allo stesso modo:
PS IIS:\Sites> Start-WebItem DemoSite
PS IIS:\Sites> Get-WebItemState IIS:\sites\DemoSite
Started
Stato AppPool
Si vuole eseguire la stessa operazione per i pool di applicazioni
PS IIS:\> cd AppPools
PS IIS:\AppPools> Get-WebItemState DemoAppPool
Started
PS IIS:\AppPools> Stop-WebItem DemoAppPool
PS IIS:\AppPools> Get-WebItemState DemoAppPool
Stopped
Ma esiste anche la proprietà di stato che è possibile leggere nel nodo AppPools. Divertiamoci un po' con il prossimo esempio. Attivare gli altoparlanti ed eseguire il comando seguente:
dir 'iis:\AppPools' | foreach {[void](new-object -com Sapi.SPVoice).Speak("Application Pool State:");}{$poolState = "Application Pool " + $_.Name +" is " + $_.State;$poolState;[void](new-object -com Sapi.SPVoice).Speak($poolState);}
Avviare di nuovo DemoAppPool:
PS IIS:\AppPools> Start-WebItem DemoAppPool
Riavvio di AppPools
L'unica differenza con AppPools è che possono essere riciclati. Il cmdlet per riciclare AppPools viene chiamato Restart-WebItem e non Recycle-WebItem. PowerShell ha regole di denominazione piuttosto rigide e abbiamo dovuto accontentarsi di Restart-WebItem. Di seguito viene illustrato un po' l'esempio
- Effettuare una richiesta alla pagina predefinita del "Sito Web predefinito".
- L'esecuzione di query sul PID del processo di lavoro è la gestione della richiesta.
- Riciclo del pool di applicazioni.
- Richiedere di nuovo il PID per confermare che il processo è stato riavviato.
1. Richiesta della pagina predefinita
La classe Net.WebClient viene usata per richiedere http://localhost/. Invece di visualizzare l'output sullo schermo, si sta semplicemente esaminando la lunghezza della risposta.
PS IIS:\AppPools> $response = (new-object Net.WebClient).DownloadString("http://localhost/")
PS IIS:\AppPools> $response.Length
689
2. Consultazione del PID del processo di lavoro
Supponendo che nel computer non siano presenti altri siti Web e applicazioni attivi, il comando seguente deve restituire un solo PID:
PS IIS:\AppPools> get-process w3wp | select processname,id
ProcessName Id
----------- --
w3wp 3684
Esiste un modo migliore per accedere ai processi di lavoro, affrontati successivamente in questa procedura dettagliata.
3. Riciclare il pool di applicazioni
Il pool di applicazioni viene riciclato usando il cmdlet Restart-WebItem:
PS IIS:\AppPools> Restart-WebItem DefaultAppPool
4. Esecuzione di query per il PID del processo di lavoro
Se l'AppPool è stato riciclato con successo, l'ID processo dovrebbe essere stato modificato.
PS IIS:\AppPools> get-process w3wp | select processname,id
ProcessName Id
----------- --
w3wp 5860
Processi e richieste di lavoro
Il cmdlet get-process non consente di capire quale pool di applicazioni serve un processo di lavoro specifico. Questa operazione può essere eseguita facilmente, tuttavia:
PS IIS:\AppPools> dir DefaultAppPool\WorkerProcesses
processId Handles state StartTime
--------- ------- ----- ---------
6612 326 1 3/28/2008 12:20:27 PM
Attualmente in esecuzione di richieste
Se il computer non è un computer di produzione, sarà difficile esaminare le richieste attualmente in esecuzione. La richiesta non è più disponibile fino a quando non si effettua una richiesta tramite Internet Explorer e si torna alla console di PowerShell. Ecco un piccolo helper; una richiesta che richiede molto tempo.
Set-Content "$env:systemdrive\inetpub\wwwroot\long.aspx" "<%@ Page language=`"C#`"%><%System.Threading.Thread.Sleep(30000);Response.Write(`"slept for 30 seconds`");%>"
Se si desidera esaminare le richieste attualmente in esecuzione, è possibile digitare il comando seguente (NOTA: l'ID processo da usare per il comando get-item sarà diverso nel computer):
PS IIS:\AppPools\DefaultAppPool\WorkerProcesses> dir
Process State Handles Start Time
Id
-------- ----- ------- ----------
6612 Running 737 3/31/2008 8:18:15 AM
PS IIS:\AppPools\DefaultAppPool\WorkerProcesses> (get-item 6612).GetRequests(0).Collection
requestId : d8000001800000f5
connectionId : d8000001600000f3
verb : GET
url : /long.aspx
siteId : 1
In alternativa, se si vuole vedere quanto tempo è già trascorso dopo l'avvio della richiesta:
PS IIS:\AppPools\DefaultAppPool\WorkerProcesses> (get-item 6612).GetRequests(0).Collection | select url,timeElapsed
url timeElapsed
--- -----------
/long.aspx 2637
Sommario
Fatto. In questa procedura dettagliata si è appreso come eseguire una query sullo stato dei pool di applicazioni e dei siti IIS. Hai scoperto come avviarli e fermarli. Si è anche appreso come esaminare i processi di lavoro e le richieste attualmente in esecuzione.