我是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'" | select workingSetSize | fl。
但它对我来说效果不佳...
首先,使用 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