回收后基于apppool获取进程ID

Get process ID based on apppool after a recycle

我们的应用程序池每晚 02:00 左右回收。我想在回收后创建一个进程转储,但进程 ID 在回收后发生变化。

如何根据apppool标识(用户名运行进程)或apppool名称获取回收apppool的进程ID?

我试过了运行:

appcmd list wp

这给了我名字 + id。我如何使用 powershell 过滤此结果以仅将基于特定名称的 ID 保存到变量中?

我在想类似的事情:

$processId = appcmd list wp | Where-Object {$_.apppool -eq "MyApp_web"}

提前致谢,

蒂姆

EDIT:

$workerprocess = appcmd list wp /apppool.name:"MyApp_Web"

returns the following: WP "6816" (applicationPool:MyApp_Web)

现在我只想要这个进程的 ID,而不是所有其他数据

EDIT 2 : Thanks to Vesper

$WebWorker = appcmd list wp /apppool.name:"MyApp_Web"

if ($WebWorker -match "\d+") { $WebId=$matches[0] }

Write-Host

对于您的情况,您需要做的就是从字符串中获取 PID。由于 PID 是一个数字序列,您可以使用正则表达式匹配来获取匹配区域,如下所示:

if ($workerprocess -match "\d+") { $pid=$matches[0] }

这将 return 6816 出你的字符串。