Frage

ist jemand kennt eine Möglichkeit, den Anwendungspool zu erhalten, die mit einer Prozess-ID verknüpft ist? Ich verwende Win32_Process die W3WP Dienste abzufragen und die PID nun wieder Ich versuche, die app-Pool mit ihm verbunden zu bekommen.

War es hilfreich?

Lösung

Wenn Sie nur Befehlszeile, um es herauszufinden Ad-hoc Sie können dies tun, auch:

Das Skript bereits in systemroot \ system32 auf Windows Server 2003 ist so platziert, gehen Sie einfach auf Ihre Eingabeaufforderung und geben Sie in Iisapp.vbs (die vbs ist optional) und Sie erhalten eine sofortige Liste aller App-Pool Informationen haben Sie schon immer wissen wollten. Sie müssen möglicherweise Iisapp.vbs cscript wenn CScript nicht Ihr Standard-WSH-Skript-Host ist.

Lassen Sie uns ein Beispiel für die Ausgabe finden Sie unter:

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

Direkt aus dem Maul des Pferdes, Microsoft-Dokumente diese .

Andere Tipps

Unter Windows Server 2008 hat sich dies geändert.

in systemroot \ system32 \ inetsrv Sie die appcmd.exe finden

mit

  

appcmd Liste wp

Sie erhalten eine Liste aller Arbeitsprozesse und die AppPool sie dienen.

Wenn Sie unter Windows Server 2008 laufen und Sie wollen nur die PID, zu einem anderen Skript oder Befehl zu füttern, können Sie diese verwenden:

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

Zum Beispiel, ein Batch-Skript zu erstellen, die ein Speicherabbild eines bestimmten Anwendungspool erstellt, verwenden Sie diese:

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

Ich habe gerade herausgefunden, dass Sie dies auch in der Benutzeroberfläche für IIS 7. Wählen Sie Knoten und öffnen Sie „Arbeitsprozesse“ Ihr Webserver finden. Dies wird den Namen jeden Anwendungs-Pools zusammen mit seinen Prozess-ID und Nutzung Details zeigen.

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

Versuchen Sie es mit dieser Arbeit und es sollten Sie bekommen, was Sie brauchen.

Sie können die Task-Manager verwenden, um die Benutzername der Prozess läuft (was im allgemeinen ist das gleiche wie der Anwendungspoolname) und die Prozess-ID, unter denen zu sehen, aber Sie haben auf diesen Spalten in der Task-Manager drehen, und es auch davon ausgegangen, der Benutzername, der Prozess läuft, ist das gleiche wie die Anwendungspoolnamen (die Standardeinstellung ist, soweit ich weiß, wenn man nicht mit Sharepoint und dergleichen ist).
Beachten Sie auch, dass alle auf dieser Seite aufgeführten Methoden können nur die Prozesse anzuzeigen, die derzeit ausgeführt werden, was bedeutet, dass, wenn Ihr bestimmte Prozess wird aufgrund abgeschaltet Leerlaufzeit haben Sie zuerst die Website verwenden, um den Prozess in der Liste zu bringen und in Ihrem Fall bedeutet dies, Sie sollten zuerst alle Websites zugreifen, um sicherzustellen, dass der Prozess mit ihnen verbunden ist runing.

Das sollte es tun.

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

Öffnen Sie IIS-Manager (Ausführen> Inetmgr), wählen Sie Root-Ebene von links Seitennavigation Baum und von „Eigenschaften View Panel“ wählen Sie „Arbeitsprozesse“

Klicken Sie auf die „Arbeitsprozesse“ Details aller Arbeitsprozess zu erhalten, die derzeit ausgeführt werden

Aus dieser Liste können Sie Anwendungspool Namen bekommen, Prozess-ID

PID und Application Pool gibt seinen Namen:

$AppPoolName = 'AppPoolForSite1'
(Get-ItemProperty IIS:\AppPools\$AppPoolName -Name WorkerProcesses).Collection.processId
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top