【发布时间】:2021-06-16 20:42:31
【问题描述】:
我希望这个问题能让你身体健康,
我有一个 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')}"
感谢任何想法或建议,
谁能帮忙,我真的很感激。
【问题讨论】:
-
在你的
select-object之后,添加| where {$_.'workingset(mb)' -gt 100} -
谢谢它的工作
标签: powershell powershell-2.0 powershell-3.0 powershell-4.0 powershell-remoting