Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell 如何创建一个批处理文件,告诉我正在使用的内存量?_Powershell_Batch File_Cmd - Fatal编程技术网

Powershell 如何创建一个批处理文件,告诉我正在使用的内存量?

Powershell 如何创建一个批处理文件,告诉我正在使用的内存量?,powershell,batch-file,cmd,Powershell,Batch File,Cmd,我想创建一个批处理文件,为我提供所需文件的内存。例如,Chrome.exe。如果所需内存超过1GB,请向我发送电子邮件 要检查的应用程序位于终端服务器上,需要越来越多的内存。它应该发送给我一封电子邮件,告诉我应用程序是否需要超过1GB的内存 作为信息,批处理文件将在终端服务器上运行。每10分钟由任务规划开始 到目前为止我已经试过了 这只是一个样本 并检查我的程序需要多少工作空间。比如铬 如果您询问正在运行的进程所使用的内存量,您可以使用以下命令开始体验: wmic process where n

我想创建一个批处理文件,为我提供所需文件的内存。例如,Chrome.exe。如果所需内存超过1GB,请向我发送电子邮件

要检查的应用程序位于终端服务器上,需要越来越多的内存。它应该发送给我一封电子邮件,告诉我应用程序是否需要超过1GB的内存

作为信息,批处理文件将在终端服务器上运行。每10分钟由任务规划开始

到目前为止我已经试过了

这只是一个样本

并检查我的程序需要多少工作空间。比如铬


如果您询问正在运行的进程所使用的内存量,您可以使用以下命令开始体验:

wmic process where name='chrome.exe' get WorkingSetSize
它会将您打开的每个Chrome选项卡使用的内存量转储到屏幕上

希望有帮助

我从这里取了样本:

然后,使用您提供的有关电子邮件的详细信息,您可以执行以下操作:

$app_loaded=wmic process where "workingsetsize>=1000000000" get name 
$EmailFrom = “yourgmailadress@gmail.com”
$EmailTo = “destination@somedomain.com”
$Subject = “The subject of your email”
$Body = “The application”.$app_loaded." is using more memory than expected."
$SMTPServer = “smtp.gmail.com”
$SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 587)
$SMTPClient.EnableSsl = $true
$SMTPClient.Credentials = New-Object System.Net.NetworkCredential(“usr”, “pass”);
$SMTPClient.Send($EmailFrom, $EmailTo, $Subject, $Body)
亲切问候。

试试这个

@echo off
setlocal ENABLEDELAYEDEXPANSION
set CHROME_MEM=0
for /F "tokens=5" %%a in ('tasklist ^| find "chrome"') do (set MEM=%%a
 set /A CHROME_MEM=!CHROME_MEM! + !MEM:,=!
)
echo Total Memory is %CHROME_MEM% K

我还认为PowerShell解决方案更好。WMI很好,我们也可以使用Get进程和组对象来实现,例如

解决办法是:


如果使用%SystemRoot%\System32\tasklist.exe/FI IMAGENAME eq chrome.exe/NH,则不需要使用find。设置/A CHROME\u MEM=!CHROME_MEM!记忆:,=!可以更有效地编写为set/A CHROME_MEM+=!记忆:,=!最好使用set/A CHROME_MEM+=MEM,并在该行上方插入两行set MEM=!记忆:,=!设置MEM=!成员:.=!。在德国的窗户上。是逗号而不是,。非常感谢。我对它做了一点修改,并将它作为一个解决方案纳入我的问题中。@Philipp你的衍生解决方案基本相同。这不是这个网站的工作方式。很多错误。命令错误,我们已经在PowerShell脚本中。1GB仍然是1024MB否则,对现有解决方案没有任何改进。
$app_loaded=wmic process where "workingsetsize>=1000000000" get name 
$EmailFrom = “yourgmailadress@gmail.com”
$EmailTo = “destination@somedomain.com”
$Subject = “The subject of your email”
$Body = “The application”.$app_loaded." is using more memory than expected."
$SMTPServer = “smtp.gmail.com”
$SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 587)
$SMTPClient.EnableSsl = $true
$SMTPClient.Credentials = New-Object System.Net.NetworkCredential(“usr”, “pass”);
$SMTPClient.Send($EmailFrom, $EmailTo, $Subject, $Body)
@echo off
setlocal ENABLEDELAYEDEXPANSION
set CHROME_MEM=0
for /F "tokens=5" %%a in ('tasklist ^| find "chrome"') do (set MEM=%%a
 set /A CHROME_MEM=!CHROME_MEM! + !MEM:,=!
)
echo Total Memory is %CHROME_MEM% K
$mem = get-process | Group-Object -Property Chrome.exe | 
    Format-Table @{n='Mem';e={'{0:N0}' -f (($_.Group|Measure-Object WorkingSet -Sum).Sum / 1MB)};a='right'}  -HideTableHeaders -AutoSize | Out-String

if($mem.Trim()/1 -gt 1024) {
    $EmailFrom = "noreply@do.too"
    $EmailTo = "you@do.too" 
    $Subject = "Memory Warning: $($mem.Trim()) MB accumulated" 
    $Body = "this is a notification from server x" 
    $SMTPServer = "smtp.gmail.com" 
    $SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 587) 
    $SMTPClient.EnableSsl = $true 
    $SMTPClient.Credentials = New-Object System.Net.NetworkCredential($username, $credentials); 
    $SMTPClient.Send($EmailFrom, $EmailTo, $Subject, $Body)
}
$mem = get-process | Group-Object -Property chrome.exe | 
Format-Table @{n='Mem';e={'{0:N0}' -f (($_.Group|Measure-Object WorkingSet -Sum).Sum / 1MB)};a='right'}  -HideTableHeaders -AutoSize | Out-String

if($mem.Trim()/1 -gt 1024) {
   command send-mailmessage -to example@mail.com -cc examplecc@mail.com -from noreply@mail.com -subject '"Memory Warning: 1 GB accumulated"' -smtpserver smtp.server.com -body '"this is a notification from server x"' -priority High
}