是任何人都熟悉的方式来获取与进程ID相关联的应用程序池?我使用的Win32_Process查询W3WP服务。现在回到了PID我试图让与之相关的应用程序池。

有帮助吗?

解决方案

如果你只是使用命令行来弄明白特设你也可以这样做:

脚本已经放置在systemroot \ System32 Windows Server 2003上所以干脆去你的命令提示符,然后输入iisapp.vbs(该.vbs是可选的),你就会有所有的应用程序池的信息瞬间列表你一直想知道的。您可能需要键入CSCRIPT iisapp.vbs如果在CScript不是默认的WSH脚本宿主。

让我们看看输出的示例:

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

从马的嘴直接,微软文档

其他提示

在Windows Server 2008中这种情况已经改变。

在systemroot \ System32 \ INETSRV找到Appcmd.exe的

使用

  

APPCMD列表WP

你所有的工作进程的列表和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

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

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

试试这个工作,它应该得到你所需要的。

您可以使用任务管理器来查看其下运行的过程(这一般是相同的应用程序池名称)和进程ID的用户名,但你必须打开任务管理器这些列,它还假定进程下运行的用户名相同的应用程序池的名称(这是默认的,据我所知,除非是使用SharePoint等)。点击 还要注意的是,在此页面中列出的所有方法可能只显示当前运行的进程,这意味着如果你的特定进程已经关闭了,由于空闲时间,你必须先使用该网站,以使这一进程在列表中,并在你的情况下,它意味着你应该首先访问的所有网站,以确保与他们相关的进程乳宁。

此应该这样做。

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

的PID和应用程序池给出它的名字:

$AppPoolName = 'AppPoolForSite1'
(Get-ItemProperty IIS:\AppPools\$AppPoolName -Name WorkerProcesses).Collection.processId
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top