0

我是PowerShell的新手。我必须监视一个进程并根据发送电子邮件通知的内存使用情况。我对发送电子邮件的功能很好。工作正常。但是计算内存使用情况是我无法从 system.object 转换为的问题Intiger.我的 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'" | 选择工作集大小 | 佛罗里达州

但这对我来说效果不佳...

4

1 回答 1

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
于 2013-10-08T08:37:41.553 回答