监视进程并发送阈值内存使用情况的电子邮件

时间:2013-10-08 08:12:59

标签: powershell powershell-v2.0

我是PowerShell的新手。 我必须监视一个进程并根据发送电子邮件通知的内存使用情况。我很好用发送电子邮件的功能。这工作正常。但计算内存使用量是我的问题,我无法从system.object转换为Intiger.My poewershell脚本是test.ps1如下: -

#$p = get-process chrome | select @{l="Private Memory (MB)"; e={$_.privatememorysize / 1mb}}


$f= [Math]::Round($p, 2) 
if($t -lt 40)
{ send email}

即使我尝试了这个$ t = Get-WmiObject -Class Win32_Process -Filter“Name ='Powershell.exe'”|选择workingSetSize | FL。

但它对我来说效果不好......

1 个答案:

答案 0 :(得分:0)

首先,使用Set-StrictMode -version 2.0来捕获未初始化的变量$p

#$p = get-process chrome | select @{l="Private Memory (MB)"; e={$_.privatememorysize / 1mb}}
PS C:\> $f= [Math]::Round($p, 2)
The variable '$p' cannot be retrieved because it has not been set.

那是因为$p被初始化的部分被评论: 的 # $p = get-process。注意哈希字符。

Get-Process将返回一个不需要太多麻烦的对象。

PS C:\> $p = get-process powershell
PS C:\> [Math]::Round($p.privatememorysize/1mb, 2)
67,4