首页 > 解决方案 > powersehll 中的变量、比较和运算符

问题描述

我希望这个问题能让你身体健康,

我有一个 powershell 代码,将列出我的计算机中的所有进程,内存消耗以 mb 为单位,它现在工作得很好,但问题是我想添加 -gt 操作以仅查找消耗大于 100mb 的进程

Get-Process | Select-Object Name,@{Name='WorkingSet(MB)';Expression={($_.ws / 1024kb)}} | format-table -autosize

这段代码的结果是:

Name                                                          WorkingSet(MB)
----                                                          --------------
AppleMobileDeviceService                                          8.85546875
ApplicationFrameHost                                                32.40625
armsvc                                                             3.6328125
atmgr                                                            38.98828125
atmgr                                                            38.83984375
audiodg                                                           11.2109375

当我尝试添加 -gt 100mb 时:

PS C:\Users\Documents> Get-Process | Select-Object Name,@{Name='WorkingSet(MB)';Expression={($_.ws / 1024kb) -gt 100}} | format-table -autosize

Name                                                          WorkingSet(MB)
----                                                          --------------
AppleMobileDeviceService                                               False
ApplicationFrameHost                                                   True
armsvc                                                                 False
atmgr                                                                  False

所以结果是真或假,这不是我的期望,因为我只想拥有内存消耗超过 100 的进程(必须提到消耗不仅是真还是假:/)


解决这个问题后,我的计划是让脚本每隔一小时运行一次,并记录输出以防有超过 100mb 的进程使用,如果是,一旦我登录到笔记本电脑,将使用波纹管弹出警告消息代码 :

powershell -WindowStyle hidden -Command "& {[System.Reflection.Assembly]::LoadWithPartialName('System.Windows.Forms'); [System.Windows.Forms.MessageBox]::Show('Some Services are using more than 100mb of memory','WARNING')}"

我感谢任何想法或建议,

任何人都可以在这里提供帮助,我真的很感激。

标签: powershellpowershell-2.0powershell-3.0powershell-4.0powershell-remoting

解决方案


#您可以这样做以获取超过 100MB 的进程

Get-Process |
    ? {(($_.ws/1mb) -ge 100) -eq $true} |
    select name, @{name = 'Memory';expression = {($_.ws/1mb)}} 

推荐阅读