簡體   English   中英

使用 Powershell 獲取 IIS 應用程序池 ProcessID

[英]Using Powershell to obtain an IIS Application Pool ProcessID

我已經搜索了很多選項來獲取 powershell 腳本的應用程序池進程 ID。 我遇到的問題是我發現大多數解決方案都指向使用 WebAdministration WorkerProcess。 我在 Windows Server 2012 (IIS 8) 和 Windows Server 2019 (IIS 10) 上嘗試了以下腳本。

Get-ChildItem -Path IIS:\AppPools |%{
    $AppPool = $_.Name
    Get-WmiObject -NameSpace 'root\WebAdministration' -class 'WorkerProcess' | Where-Object {$_.AppPoolName -match $AppPool} | Select-Object -Expand ProcessId | ForEach-Object {
            $AppPoolPID=$_
            $AppPoolProcces = Get-Wmiobject -Class Win32_PerfFormattedData_PerfProc_Process | Where-Object { $_.IdProcess -eq $AppPoolPID } 
            $AppPoolCpu = $AppPoolProcces.PercentProcessorTime
            $AppPoolMemory = [Math]::Round(($AppPoolProcces.workingSetPrivate / 1MB),2)
            $Cpu += $AppPoolCpu
            $Memory += $AppPoolMemory
            Write-Host "Application pool $AppPool process id: $_ Percent CPU: $Cpu Private Memory: $Memory"
    }
}

運行Get-WmiObject -NameSpace 'root\\WebAdministration' -List提供相當大的項目列表,但 WorkerProcesses 不是其中之一。

我也試過dir IIS:\\AppPools\\$AppPool\\WorkerProcesses\\也沒有提供任何結果。

如何獲取特定應用程序池的 processId? 或者如果這不再可能,我將如何獲得特定應用程序池的 CPU 和內存消耗?

嘗試通過管道獲取一些額外信息:

$id = dir IIS:\AppPools\MyAppPool\WorkerProcesses\ | Select-Object -expand processId
$id

感謝@dai 指出由於缺乏網絡請求,該進程甚至可能無法運行。 我的印象是它會一直運行。

我最初發布的腳本部分確實有效。 所以就我而言 - 沒有結果是一件好事。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM