2009-04-14 36 views
42

¿Alguien está familiarizado con una forma de obtener el grupo de aplicaciones que está asociado con un ID de proceso? Estoy usando Win32_Process para consultar los servicios de W3WP y devolver el PID ahora estoy tratando de obtener el grupo de aplicaciones asociado a él.IIS grupo de aplicaciones PID

Respuesta

18

Si usted está usando la línea de comandos para averiguarlo ad-hoc con la que puede hacer esto también:

El guión ya está colocado en systemroot \ system32 en Windows Server 2003 para simplemente ir a su símbolo del sistema y el tipo en iisapp.vbs (el .vbs es opcional) y tendrá una lista instantánea de toda la información del conjunto de aplicaciones que siempre quiso saber. Es posible que necesite escribir cscript iisapp.vbs si CScript no es su host de script WSH predeterminado.

Veamos un ejemplo de la salida:

W3WP.exe PID: 1468 AppPoolId: AppPoolForSite1.com 
W3WP.exe PID: 3056 AppPoolId: AppPoolForSite2.com 
W3WP.exe PID: 1316 AppPoolId: AppPoolForSite3.com 

directo desde la boca del caballo, documentos de Microsoft this.

3
ServerManager serverManager = new ServerManager(); 
ApplicationPoolCollection applicationPoolCollection = serverManager.ApplicationPools; 

Trate de trabajar con esto y debe conseguirle lo que necesita.

87

En Windows Server 2008 esto ha cambiado.

en systemroot \ system32 \ inetsrv a encontrar la appcmd.exe

usando

lista appcmd wp

se obtiene una lista de todos los procesos de trabajo y los que son apppool servicio.

+0

esto no parece a la lista piscinas aplicación que se ejecutan como un usuario de la máquina (SYSTEM/servicio de red) .. . ¿Alguna idea? – Doug

+8

Puedo enumerar las funciones de w3wp de NETWORK SERVICE bien. ¿Quizás no ejecutó el comando con privilegios de administrador o el proceso W3WP fue reciclado? – Shaamaan

8

si se está ejecutando en Windows Server 2008 y sólo desea que el PID, para alimentar a otro script o comando, puede utilizar esto:

c:\windows\system32\inetsrv\appcmd list wps /apppool.name:"My Application Pool" /text:WP.NAME 

Por ejemplo, para crear una secuencia de comandos por lotes que crea un volcado de memoria de un grupo de aplicación determinada, utilice esto:

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 
+1

Esto me ayudó a comenzar, pero no me importa el archivo temporal. Lo modifiqué para extraer el PID en una variable con lo siguiente: para/F "tokens = 2" %% i in ('% SystemRoot%/system32/inetsrv/appcmd list wps /apppool.name:MyAppPool') do set pid = %% i. – Dono

3

puede utilizar el administrador de tareas para ver el nombre de usuario bajo el que se ejecuta el proceso (que en general es el mismo que el nombre del grupo de aplicaciones) y el proceso de ID, pero debe activar estas columnas en el administrador de tareas, y también asume el nombre de usuario que el proceso se ejecuta bajo es el mismo que el nombre del grupo de aplicaciones (que es el valor por defecto por lo que yo sé, a menos que uno está utilizando Sharepoint y similares).
También tenga en cuenta que todos los métodos mencionados en esta página sólo se pueden visualizar los procesos que se están ejecutando actualmente, lo que significa que si su proceso en particular se ha apagado debido a ralentí vez que tenga primero en utilizar el sitio con el fin de llevar el proceso en la lista, y en su caso significa que debe acceder primero todos los sitios para asegurarse de que el proceso asociado con ellos es runing.

+0

¿Por qué el voto a favor? –

+0

Porque al enumerar 10 procesos de W3WP y sus PID no se indica cuál es para qué grupo de aplicaciones ... – Shaamaan

+0

@Shaamaan probablemente no fui lo suficientemente claro (he editado ahora la publicación para que quede más claro), pero es el "Nombre de usuario" bajo el que se ejecuta el proceso que suele ser el mismo que el nombre del grupo de aplicaciones, (compruébalo, debería ser cierto en la mayoría, si no en todas las situaciones). –

6

acabo de descubrir que también se puede encontrar esto en la interfaz de usuario para IIS 7. Seleccione el nodo de servidor web y "procesos de trabajo" abiertos. Esto mostrará el nombre de cada grupo de aplicaciones junto con su ID de proceso y detalles de utilización.

0

PID del grupo de aplicaciones y dando su nombre:

$AppPoolName = 'AppPoolForSite1' 
(Get-ItemProperty IIS:\AppPools\$AppPoolName -Name WorkerProcesses).Collection.processId 
1

Esto debe hacerlo.

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; 
} 
1

Abra el Administrador de IIS (Ejecutar> Inetmgr), Seleccionar nivel de la raíz del árbol de navegación del sitio izquierda y de “Características Panel de vista” seleccionar “los procesos de trabajo”

clic en “procesos de trabajo” para obtener detalles de todos los procesos de trabajo que en la actualidad se están ejecutando

de esta lista obtendrá el nombre del grupo de aplicaciones, identificador de proceso

Cuestiones relacionadas