it-swarm.com.de

IIS Anwendungspool-PID

ist jemand mit einer Möglichkeit vertraut, den Anwendungspool zu erhalten, der einer Prozess-ID zugeordnet ist? Ich verwende Win32_Process, um die W3WP-Dienste abzufragen und die PID zurückzugeben. Jetzt versuche ich, den damit verbundenen App-Pool zu erhalten.

42
Adonis L

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

Das Skript ist bereits unter Windows Server 2003 im Verzeichnis systemroot\system32 abgelegt. Wechseln Sie dazu einfach in die Eingabeaufforderung und geben Sie iisapp.vbs ein (die .vbs-Datei ist optional). Sie haben sofort eine Liste aller Informationen zum App Pool, die Sie haben wollte schon immer wissen. Möglicherweise müssen Sie cscript iisapp.vbs eingeben, wenn CScript nicht der standardmäßige WSH-Skripthost ist. 

Sehen wir uns ein Beispiel für die Ausgabe an: 

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

Direkt aus dem Munde des Pferdes dokumentiert Microsoft das .

17
Jim

Unter Windows Server 2008 hat sich dies geändert.

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

mit 

appcmd list wp

sie erhalten eine Liste aller Worker-Prozesse und des Apppools, den sie bedienen.

88
Morten

Wenn Sie unter Windows Server 2008 arbeiten und NUR die PID für ein anderes Skript oder einen anderen Befehl verwenden möchten, können Sie Folgendes verwenden:

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

Um beispielsweise ein Batch-Skript zu erstellen, das einen Speicherauszug eines bestimmten App-Pools erstellt, verwenden Sie Folgendes:

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
8
Grant Holliday

Ich habe gerade entdeckt, dass Sie dies auch in der Benutzeroberfläche für IIS finden können. 7. Wählen Sie Ihren Webserverknoten aus und öffnen Sie "Arbeitsprozesse". Dadurch wird der Name jedes Anwendungspools zusammen mit seiner Prozess-ID und den Verwendungsdetails angezeigt.

6
Dan Bailiff

Sie können den Task-Manager verwenden, um den Benutzernamen anzuzeigen, unter dem der Prozess ausgeführt wird (der im Allgemeinen mit dem Namen des Anwendungspools identisch ist) und die Prozess-ID. Sie müssen diese Spalten jedoch im Task-Manager aktivieren Der Benutzername, unter dem der Prozess ausgeführt wird, ist derselbe wie der Name des Anwendungspools (dies ist meines Wissens der Standard, es sei denn, einer verwendet Sharepoint und dergleichen).
Beachten Sie außerdem, dass bei allen auf dieser Seite aufgelisteten Methoden möglicherweise nur die Prozesse angezeigt werden, die derzeit ausgeführt werden. Wenn Ihr bestimmter Prozess aufgrund von Leerlaufzeiten heruntergefahren wurde, müssen Sie zuerst die Site verwenden, um den Prozess zu starten in der Liste, und in Ihrem Fall bedeutet dies, dass Sie zuerst auf alle Websites zugreifen müssen, um sicherzustellen, dass der mit ihnen verknüpfte Prozess ausgeführt wird.

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

Versuchen Sie damit zu arbeiten und es sollte Ihnen das geben, was Sie brauchen.

3
Chris Ballance

Öffnen Sie IIS Manager (Ausführen> Inetmgr), wählen Sie die Stammebene aus der linken Site-Navigationsstruktur aus und wählen Sie im Bereich "Funktionsansicht" die Option "Arbeitsprozesse".

Klicken Sie auf "Arbeitsprozesse", um Details zu allen Arbeitsprozessen zu erhalten, die derzeit ausgeführt werden

Aus dieser Liste erhalten Sie den Namen des Anwendungspools, Prozess-ID

1
sachin

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;
}
1
P. Raphael

PID und Name des Anwendungspools:

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