我是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。
但它对我来说效果不好......
答案 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