IIS pool di applicazioni PID
-
09-09-2019 - |
Domanda
è chiunque abbia familiarità con un modo per ottenere il pool di applicazioni che è associato con un ID di processo? Sto usando Win32_Process per interrogare i servizi w3wp e restituire il PID ora sto cercando di ottenere il pool di applicazione ad esso associata.
Soluzione
Se si sta usando solo riga di comando per capirlo ad hoc si può fare anche questo:
Lo script è già messo in systemroot \ system32 in Windows Server 2003 così semplicemente andare al tuo prompt dei comandi e digitare Iisapp.vbs (vbs è opzionale) e avrete un elenco immediato di tutte le informazioni App Pool che hai sempre voluto sapere. Potrebbe essere necessario digitare cscript Iisapp.vbs se CScript non è il tuo host di script WSH di default.
Vediamo un esempio di output:
W3WP.exe PID: 1468 AppPoolId: AppPoolForSite1.com
W3WP.exe PID: 3056 AppPoolId: AppPoolForSite2.com
W3WP.exe PID: 1316 AppPoolId: AppPoolForSite3.com
direttamente dalla bocca del cavallo, documenti Microsoft questo .
Altri suggerimenti
In Windows Server 2008 questo è cambiato.
in systemroot \ system32 \ inetsrv a trovare l'appcmd.exe
con
Elenco APPCMD wp
si ottiene un elenco di tutti i processi di lavoro e che AppPool sono al servizio.
Se siete in esecuzione su Windows Server 2008 e si desidera solo il PID, per alimentare ad un altro script o un comando, è possibile utilizzare questo:
c:\windows\system32\inetsrv\appcmd list wps /apppool.name:"My Application Pool" /text:WP.NAME
Ad esempio, per creare uno script batch che crea un dump della memoria di un particolare pool di app, utilizzare questo:
c:\windows\system32\inetsrv\appcmd list wps /apppool.name:"My Application Pool" /text:WP.NAME > "%temp%\pid.txt"
for /F %%a in (%temp%\pid.txt) do c:\debugger\adplus.exe -hang -o d:\dumps -p %%a
pause
Ho appena scoperto che si possono anche trovare questo nell'interfaccia utente per IIS 7. Selezionare il nodo del server web e aperti "processi di lavoro". Questo mostrerà il nome di ogni pool di applicazioni insieme con il suo processo di identificazione e di utilizzo particolari.
ServerManager serverManager = new ServerManager();
ApplicationPoolCollection applicationPoolCollection = serverManager.ApplicationPools;
Prova a lavorare con questo e dovrebbe ottenere quello che ti serve.
È possibile utilizzare task manager per visualizzare il nome utente con cui il processo viene eseguito (che in generale è lo stesso del nome del pool di applicazioni) e l'ID del processo, ma si deve attivare queste colonne in task manager, ed è assume anche il nome utente che il processo viene eseguito sotto è lo stesso come il nome del pool di applicazioni (che è il default per quanto ne so, a meno che non si sta usando Sharepoint e simili).
Si noti inoltre che tutti i metodi elencati in questa pagina potrebbe visualizzare solo i processi attualmente in esecuzione, il che significa che se il vostro particolare processo si è spento a causa di minimo di tempo è necessario prima di utilizzare il sito in modo da portare il processo in alto nella lista , e nel tuo caso significa che si dovrebbe prima accedere a tutti i siti per fare in modo che il processo ad essi associati è runing.
Questo dovrebbe farlo.
public string getAppPoolName(int pid)
{
ServerManager serverManager = new ServerManager();
ApplicationPoolCollection apc = serverManager.ApplicationPools;
foreach (var app in apc)
{
var workers = app.WorkerProcesses;
foreach (var w in workers)
{
if (w.ProcessId == pid)
{
return app.Name;
}
}
}
return string.Empty;
}
Aprire Gestione IIS (Esegui> Inetmgr), Seleziona livello principale da un albero di navigazione del sito a sinistra e da “Caratteristiche del pannello di visualizzazione” selezionare “processi di lavoro”
Clicca sui “processi di lavoro” per ottenere i dettagli di tutti i processi di lavoro che sono attualmente in esecuzione
Da questo elenco si otterrà applicazione nome del pool, processo id
PID del pool di applicazioni e di dare il suo nome:
$AppPoolName = 'AppPoolForSite1'
(Get-ItemProperty IIS:\AppPools\$AppPoolName -Name WorkerProcesses).Collection.processId