2009-04-14 23 views
42

, bir işlem kimliğiyle ilişkili Uygulama havuzunu elde etmenin bir yolunu bilen biri mi? W3WP hizmetlerini sorgulamak ve PID'yi döndürmek için Win32_Process kullanıyorum, bununla ilişkili uygulama havuzunu almaya çalışıyorum.IIS Uygulama havuzu PID

cevap

18

sadece reklam-hoc anlamaya komut satırını kullanıyorsanız siz de bunu yapabilirsiniz:

komut dosyası zaten Windows Server 2003'te sistemkökü \ system32 yerleştirilir böylece sadece Komut İstemi ve türüne gidin iisapp.vbs dosyasında (.vbs isteğe bağlıdır) ve her zaman bilmek istediğiniz tüm Uygulama Havuzu bilgilerinin anlık bir listesini alırsınız. CScript varsayılan WSH komut diziniz değilse, cscript iisapp.vbs yazmanız gerekebilir. at ağzına Microsoft belgeleri this den

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

Doğrudan:

çıkışının bir örneğini görelim.

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

Bu konuda çalışmayı deneyin ve ihtiyacınız olanı almanız gerekir.

87

Windows Server 2008'de bu değişti. systemroot

\ system32 \ inetsrv size tüm alt işlemlerin bir listesini almak ve hangi olduklarını AppPool

appcmd liste wp kullanarak Appcmd.exe'yi

bulmak hizmet.

+0

itibaren

çalışan tüm işçi sürecinin .. . Düşüncesi olan var mı? – Doug

+8

NETWORK SERVICE w3wp rollerini listeleyebilirim. Belki de komutu Yönetici ayrıcalıkları ile çalıştırmadınız veya W3WP işlemi geri dönüştürüldü? – Shaamaan

8

Windows Server 2008 üzerinde çalıştırıyorsanız ve SADECE başka senaryo veya komuta beslemek için PID, isterseniz bunu kullanabilirsiniz: Örneğin

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

, yaratan bir toplu komut dosyası oluşturmak için belirli bir uygulama havuzunun bir bellek dökümü, bunu kullanın:

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 
+1

Bu başladı, ama geçici bir dosya umurumda değil. PID'yi aşağıdaki şekilde bir değişkene çıkarmak için değiştirdim: for/F "tokens = 2" %% i ('% SystemRoot%/system32/inetsrv/appcmd list wps /apppool.name:MyAppPool') pid'i ayarlamak = %% i. – Dono

3
kullanıcı adını görüntülemek için görev yöneticisini kullanabilirsiniz

altında işlem çalıştığı (genel olarak hangi uygulama havuzu adıyla aynıdır) ve süreç ID, ancak bu sütunları görev yöneticisinde açmalısınız ve aynı zamanda İşlemin altında çalıştığı kullanıcı adı, uygulama havuzu adıyla aynıdır (bu, Sharepoint ve benzerlerini kullanmadığı sürece, bildiğim kadarıyla varsayılan değerdir).
Ayrıca, bu sayfada listelenen tüm yöntemlerin yalnızca şu anda çalışmakta olan işlemleri gösterebileceğini unutmayın; yani, belirli bir işleminiz, işlemi başlatmak için siteyi ilk kez kullandığınız boşta kalma süresi nedeniyle kapatılmışsa liste ve sizin durumunuzda, onlarla ilişkili işlemin yürütülmekte olduğundan emin olmak için öncelikle tüm sitelere erişmeniz gerektiği anlamına gelir.

+0

Neden düşüş var? –

+0

10 W3WP işlemi ve PID'lerinin listelenmesi, hangisinin Uygulama Havuzu için geçerli olduğunu söylemiyor ... – Shaamaan

+0

@Shaamaan Muhtemelen yeterince açık değildim, (Daha açık yapmak için gönderiyi şimdi düzenledim), ancak İşlemin altında çalıştığı "Kullanıcı Adı", genellikle uygulama havuzu adıyla aynıdır (kontrol edin, tüm durumlarda olmasa bile çoğunu doğru tutmalıdır). –

6

Ayrıca bunu IIS için kullanıcı arabiriminde de bulabileceğinizi keşfettim. 7. Web sunucusu düğümünüzü seçin ve "İşçi İşlemleri" ni açın. Bu, her Uygulama Havuzu'nun adını Süreç Kimliği ve kullanım ayrıntılarıyla birlikte gösterecektir.

0

PID ve Uygulama Havuzu adını veren:

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

Bu yapmalı.

1

Açık IIS Yöneticisi (Çalıştır> INetMgr), sol site navigasyon ağacından ve seçin kök düzey “Çalışan İşlemleri” bilgi almak için “İşçi Süreçleri” konulu

tıklayın seçmek “Görünüm Paneli Özellikleri”

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; 
} 
şu anda uygulama havuzu adını alacak bu listede, bu bir makine kullanıcı (SİSTEM/AĞ HİZMETİ) olarak çalışacak uygulama havuzları listelemek için görünmüyor işlem kimliği

İlgili konular