如何让PowerShell输出的进程内存与任务管理器数值匹配?
调整PowerShell脚本让工作集内存输出匹配任务管理器数值
任务管理器里的“工作集”内存显示单位是千字节(KB),而Get-Process的WorkingSet64属性返回的是字节,这就是两者数值不匹配的核心原因。只需要在脚本里加上单位转换和取整逻辑,就能让输出和任务管理器对齐。
修改后的脚本如下:
$computerName = "mymachine" # 远程计算机名称 $processName = "SunGard.Vpm.ProcessingServer.ServiceHost" # 进程名称 $username = 'walter.johnson' $password = 'mypassowrd' $secpw = ConvertTo-SecureString $password -AsPlainText -Force $cred = New-Object Management.Automation.PSCredential ($username, $secpw) Invoke-Command -ComputerName $computerName -Credential $cred -ScriptBlock { Get-Process -Name "FIS*" | ForEach-Object { # 把字节转换为KB并取整,匹配任务管理器的显示逻辑 [Math]::Round($_.WorkingSet64 / 1024) } }
关键修改点:
- 用
ForEach-Object遍历进程,方便对内存数值做计算处理 $_.WorkingSet64 / 1024完成字节到千字节的单位转换[Math]::Round()对结果取整,和任务管理器的数值展示逻辑一致
如果出现微小的数值差异,是因为任务管理器和脚本的采样时间点不同,属于正常现象。
内容的提问来源于stack exchange,提问作者capser
相关产品推荐
相关产品推荐

