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