gpt4 book ai didi

powershell - 从任务列表中传递答案以检查进程的内存使用情况,并在超过阈值时终止

转载 作者:行者123 更新时间:2023-12-03 01:18:15 25 4
gpt4 key购买 nike

我发现一个可以执行此任务的Powershell版本,但是它使用WMI,这就是我遇到的问题,它泄漏并达到512MB的上限,并停止“内存不足”工作。

$processToMonitor = 'wmiprvse.exe'$threshold = 513MB

Register-WmiEvent -Query "SELECT * FROM __InstanceModificationEvent WITHIN 5 WHERE TargetInstance ISA 'Win32_Process' AND TargetInstance.Name='$processToMonitor' AND TargetInstance.WorkingSetSize > $threshold" -Action { Get-Process -PID $event.SourceEventArgs.NewEvent.TargetInstance.ProcessId | Stop-Process -Force -ErrorAction SilentlyContinue | Out-Null }


因此,当WMI内存不足时,上述方法将不起作用,因此我可以使用其他方式来执行相同的操作吗?
如果我使用:

tasklist | find "WmiPrvSE.exe"


它使用pid和内存使用情况吐出当前的WmiPrvSE进程。关于如何使用它的想法?
有针对此WMI泄漏问题的补丁程序,但我无法尽快对所有服务器进行补丁程序。

最佳答案

试试这个:

$task = (tasklist | select-string 'Wmiprvse.exe') -split '\s+'

$proc = $task[0] -replace '\.exe'
[int]$mem = $task[-2] -replace '\.'

if ($mem -gt (513MB /1KB) )
{
(get-process $proc).kill()
}

但这是等效且可取的(可以存在两个wmiprvse.exe session !):
Get-Process wmiprvse | ? { $_.ws -gt 513MB } | Stop-Process -Force

关于powershell - 从任务列表中传递答案以检查进程的内存使用情况,并在超过阈值时终止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23565231/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com