是否有人熟悉如何获取与进程ID关联的应用程序池?我正在使用Win32_Process来查询W3WP服务并返回PID,现在我试图获取与之关联的应用程序池。IIS应用程序池PID
回答
如果你只是使用命令行来弄明白特设你也可以这样做:
草稿已经放置在systemroot \ System32 Windows Server 2003上所以干脆去你的命令提示符和类型在iisapp.vbs中(.vbs是可选的),您将立即获得您一直想知道的所有App Pool信息的列表。如果CScript不是您的默认WSH脚本宿主,则可能需要键入cscript iisapp.vbs。
让我们看到输出的例子:
从马的嘴,微软文档 thisW3WP.exe PID: 1468 AppPoolId: AppPoolForSite1.com
W3WP.exe PID: 3056 AppPoolId: AppPoolForSite2.com
W3WP.exe PID: 1316 AppPoolId: AppPoolForSite3.com
直接。
ServerManager serverManager = new ServerManager();
ApplicationPoolCollection applicationPoolCollection = serverManager.ApplicationPools;
试着用这个工作,它应该得到你所需要的。
在Windows Server 2008上已更改。
在systemroot\ SYSTEM32 \ INETSRV你发现使用
APPCMD列表WP的Appcmd.exe的
你所有的工作进程的列表和APPPOOL他们服务。
如果你的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
这让我开始了,但我不在乎临时文件。我修改它以将PID提取到具有以下内容的变量中:for/F“tokens = 2”%% i in('%SystemRoot%/ system32/inetsrv/appcmd list wps /apppool.name:MyAppPool')do set pid = %%我。 – Dono 2014-03-04 09:51:39
您可以使用任务管理器来查看用户名在其下运行的过程(这一般是相同的应用程序池名称)和过程ID,但你必须在任务管理器中打开这些列,并且它也假定为该进程所运行的用户名与应用程序池名称相同(据我所知,这是默认的,除非有人使用Sharepoint等)。
另请注意,此页面中列出的所有方法可能只显示当前正在运行的进程,这意味着如果您的特定进程由于空闲时间而关闭,则必须先使用该站点才能启动进程该列表,在你的情况下,这意味着你应该首先访问所有网站,以确保与它们相关的进程正在运行。
我刚刚发现你也可以在IIS的用户界面中找到它。选择你的Web服务器节点并打开“工作进程”。这将显示每个应用程序池的名称以及其进程ID和利用率详细信息。
的PID和应用程序池给出它的名字:
$AppPoolName = 'AppPoolForSite1'
(Get-ItemProperty IIS:\AppPools\$AppPoolName -Name WorkerProcesses).Collection.processId
这应该这样做。
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;
}
打开IIS管理器(运行> INETMGR),从左边网址导航树和选择根级别“功能视图面板”中选择“工作进程”
点击“工作进程”,以获得详细信息这是目前运行
从这个列表中,您将获得应用程序池名称,进程ID
- 1. IIS应用程序池
- 2. IIS应用程序池
- 3. IIS应用程序池和多线程
- 4. IIS应用程序池标识
- 5. IIS 7.5 ISAPI应用程序池安全
- 6. IIS应用程序池:列表配置
- 7. IIS应用程序池和缓存
- 8. IIS应用程序池回收
- 9. 在IIS中枚举应用程序池
- 10. 创建IIS 6应用程序池
- 11. IIS 6应用程序池管理
- 12. IIS 6.0应用程序池崩溃
- 13. IIS 6.0应用程序池共享DLL
- 14. IIS应用程序池和静态类
- 15. 从IIS应用程序池运行应用程序
- 16. 应用程序暂挂IIS应用程序池.Net 4.5.1
- 17. 为应用程序设置应用程序池iis express 7.5
- 18. IIS发布4.5.1 web应用程序到应用程序池4.0
- 19. 应用程序在IIS 7.0 2.0应用程序池中运行,但不在1.1应用程序池中
- 20. IIS应用程序池回收和本地程序集
- 21. 使用大量内存的IIS应用程序池进程
- 22. 引导Asp.Net应用程序不使用IIS应用程序池配置StartMode =“AlwaysRunning”
- 23. C#为IIS-6和IIS-7创建IIS应用程序池和网站
- 24. 设置将LightSwitch应用程序部署到的IIS应用程序池
- 25. 查找导致应用程序池崩溃的应用程序(IIS 7)
- 26. 在IIS应用程序池回收期间调试应用程序行为
- 27. 编程方式添加应用程序池(应用程序池)未显示在Internet Information Services(IIS)管理器了
- 28. IIS应用程序池切换工作线程吗?
- 29. 回收应用程序池作为应用程序池标识
- 30. IIS 6应用程序池不一致地被禁用自动
这似乎并没有列出,作为一个计算机用户(系统/网络服务)上运行的应用程序池中的所有工作进程的.. 。 有什么想法吗? – Doug 2010-10-14 03:53:16
我可以列出网络服务w3wp角色就好了。也许你没有使用管理员权限运行该命令,或者W3WP进程已被回收? – Shaamaan 2012-07-18 09:21:56