IIS应用程序池PID

时间:2009-04-14 19:05:43

标签: .net iis application-pool pid

是否有人熟悉获取与进程ID关联的应用程序池的方法?我正在使用Win32_Process查询W3WP服务并返回PID现在我正在尝试获取与之关联的应用程序池。

9 个答案:

答案 0 :(得分:91)

在Windows Server 2008上,这已经发生了变化。

在systemroot \ system32 \ inetsrv中找到appcmd.exe

使用

  

appcmd list wp

您将获得所有工作进程的列表以及他们正在服务的应用程序池。

答案 1 :(得分:17)

如果你只是使用命令行进行临时解决,你也可以这样做:

该脚本已放置在Windows Server 2003上的systemroot \ system32中,只需转到命令提示符并输入iisapp.vbs(.vbs是可选的),您将拥有所有应用程序池信息的即时列表你一直都想知道。如果CScript不是您的默认WSH脚本宿主,则可能需要键入cscript iisapp.vbs。

让我们看一下输出的例子:

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

直接从马的口中,微软记录this

答案 2 :(得分:8)

如果您在Windows Server 2008上运行并且只想要PID,要提供给另一个脚本或命令,您可以使用它:

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

例如,要创建用于创建特定应用程序池的内存转储的批处理脚本,请使用以下命令:

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

答案 3 :(得分:7)

我刚刚发现您也可以在IIS 7的UI中找到它。选择您的Web服务器节点并打开“工作进程”。这将显示每个应用程序池的名称及其进程ID和利用率详细信息。

答案 4 :(得分:3)

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

尝试使用此功能,它可以满足您的需求。

答案 5 :(得分:3)

您可以使用任务管理器查看进程运行的用户名(通常与应用程序池名称相同)和进程ID,但您必须在任务管理器中打开这些列,并且它还假设进程运行的用户名与应用程序池名称相同(据我所知,这是默认值,除非使用Sharepoint等)。
另请注意,此页面中列出的所有方法可能仅显示当前正在运行的进程,这意味着如果您的特定进程由于空闲时间而关闭,则您首先要使用该站点以便将该进程放入列表中,在您的情况下,这意味着您应首先访问所有网站,以确保与其关联的进程正在运行。

答案 6 :(得分:1)

这应该这样做。

MVVM

答案 7 :(得分:1)

打开IIS管理器(运行> Inetmgr),从左侧站点导航树中选择根级别,然后从“功能视图面板”中选择“工作进程”

单击“工作进程”以获取当前正在运行的所有工作进程的详细信息

从此列表中,您将获得应用程序池名称,进程ID

答案 8 :(得分:0)

PID和应用程序池的名称:

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