是否有人熟悉如何獲取與進程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