Question

est quiconque est familier avec un moyen d'obtenir le pool d'applications qui est associée à un ID de processus? J'utilise Win32_Process pour interroger les services w3wp et retourner le PID maintenant je suis en train d'obtenir la piscine app associée.

Était-ce utile?

La solution

Si vous utilisez juste ligne de commande pour le comprendre ad hoc, vous pouvez le faire aussi:

Le script est déjà placé dans systemroot \ system32 sur Windows Server 2003 si simplement aller à l'invite de commande et tapez Iisapp.vbs (les .vbs est facultatif) et vous aurez une liste instantanée de toutes les informations Piscine App vous avez toujours voulu savoir. Vous devrez peut-être taper cscript Iisapp.vbs si CScript est pas votre défaut hôte de script WSH.

Voyons un exemple de la sortie:

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

directe de la bouche du cheval, des documents Microsoft cette .

Autres conseils

Sur Windows Server 2008 a changé.

dans systemroot \ system32 \ inetsrv vous trouvez la appcmd.exe

en utilisant

  

Liste APPCMD wp

vous obtenez une liste de tous les processus de travail et qui apppool qu'ils purgent.

Si vous utilisez sur Windows Server 2008 et que vous voulez le PID, pour alimenter un autre script ou commande, vous pouvez utiliser ceci:

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

Par exemple, pour créer un script batch qui crée une image mémoire d'un pool d'application particulier, utilisez ceci:

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

Je viens de découvrir que vous pouvez également trouver dans l'interface utilisateur pour IIS 7. Sélectionnez votre noeud de serveur Web et ouvrir « Processus de travail ». Cela montrera le nom de chaque pool d'applications ainsi que son ID processus et les détails d'utilisation.

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

Essayez de travailler avec cela et il devrait vous obtenir ce dont vous avez besoin.

Vous pouvez utiliser le gestionnaire de tâches pour afficher le nom d'utilisateur sous lequel le processus se déroule (qui en général est le même que le nom du pool d'applications) et l'ID de processus, mais vous devez activer ces colonnes dans le gestionnaire de tâches, et suppose également le nom d'utilisateur que le processus fonctionne sous est le même que le nom du pool d'applications (ce qui est la valeur par défaut pour autant que je sache, à moins que l'on utilise Sharepoint, etc.).
A noter également que toutes les méthodes énumérées dans cette page peuvent afficher uniquement les processus qui sont en cours d'exécution, ce qui signifie que si votre processus particulier est arrêté en raison de temps d'inactivité, vous devez d'abord utiliser le site afin de faire avancer le processus dans la liste , et dans votre cas, cela signifie que vous devez d'abord accéder à tous les sites pour vous assurer que le processus qui leur sont associés runing.

Cela devrait le faire.

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

Ouvrez le Gestionnaire IIS (Exécuter> Inetmgr), Sélectionnez le niveau de la racine de l'arbre de navigation sur le site gauche et de « Caractéristiques Voir panneau » sélectionner « des processus de travail »

Cliquez sur le « processus de travail » pour obtenir des détails de tous les processus de travail qui sont en cours d'exécution

A partir de cette liste, vous obtiendrez l'application nom du pool, id processus

PID et le pool d'applications donnant son nom:

$AppPoolName = 'AppPoolForSite1'
(Get-ItemProperty IIS:\AppPools\$AppPoolName -Name WorkerProcesses).Collection.processId
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top