Pergunta

é qualquer pessoa familiarizada com a maneira de obter o pool de aplicativos que está associado com um ID de processo? Eu estou usando Win32_Process para consultar os serviços w3wp e retornar o PID agora eu estou tentando obter o pool de aplicativo associado a ele.

Foi útil?

Solução

Se você está apenas usando linha de comando para descobrir isso ad-hoc que você pode fazer isso também:

O script já está colocado em systemroot \ system32 no Windows Server 2003 para simplesmente ir para o seu prompt de comando e digite Iisapp.vbs (.vbs é opcional) e você terá uma lista instantânea de todas as informações App Piscina que você sempre quis saber. Você pode precisar digitar Iisapp.vbs cscript se CScript não é o host de script WSH padrão.

Vamos ver um exemplo da saída:

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

Direto da boca do cavalo, documentos do Microsoft este .

Outras dicas

No Windows Server 2008 isso mudou.

no sistema \ system32 \ inetsrv encontrar o appcmd.exe

usando

appcmd lista wp

Você receberá uma lista de todos os processos de trabalho e que apppool eles estão servindo.

Se você estiver executando no Windows Server 2008 e você só quer que o PID, o feed para outro script ou comando, você pode usar isto:

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

Por exemplo, para criar um script em lotes que cria um despejo de memória de um determinado pool de aplicativos, use a seguinte:

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

Eu só descobri que você também pode encontrar este na interface do usuário para o IIS 7. Selecione o nó do servidor web e "Processos de Trabalho" abertos. Isto irá mostrar o nome de cada pool de aplicativos, juntamente com seus ID e utilização detalhes do processo.

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

Tente trabalhar com isso e ele deve obter o que você precisa.

Você pode usar o Gerenciador de tarefas para exibir o nome do usuário sob o qual o processo é executado (que, em geral, é o mesmo que o nome do pool de aplicativos) e o ID do processo, mas você tem que ligar estas colunas em gerenciador de tarefas, e também assume o nome de usuário que o processo é executado sob é o mesmo que o nome do pool de aplicativos (que é o padrão, tanto quanto eu sei, a menos que um está usando Sharepoint e outros).
Observe também que todos os métodos listados nesta página somente pode exibir os processos que estão sendo executados, o que significa que se o seu processo particular foi desligado devido ao tempo ocioso você tem primeiro a usar o site, a fim de trazer o processo para cima na lista e, no seu caso isso significa que você deve primeiro acessar todos os sites para se certificar de que o processo associado com eles é runing.

Isso deve fazê-lo.

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;
}

Abra o Gerenciador de IIS (Run> Inetmgr), Select nível da raiz da árvore de navegação do site esquerda e de “Características Ver Painel”, selecione “Processos de Trabalho”

Clique em “Processos de Trabalho” para obter detalhes de todos os processo de trabalho que estão actualmente em execução

A partir desta lista você vai obter o nome do pool de aplicativos, ID do processo

PID e Pool de Aplicativos dando seu nome:

$AppPoolName = 'AppPoolForSite1'
(Get-ItemProperty IIS:\AppPools\$AppPoolName -Name WorkerProcesses).Collection.processId
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top