在Windows PowerShell中获取Python进程WMI类及内存监控问题
解决Python进程无法通过Win32_Process捕获的问题
可能原因及验证手段
- 进程名称不匹配:你的Python进程可能并非以
python.exe命名——比如用pythonw.exe运行(无控制台窗口),或是特定版本的命名如python3.11.exe。先通过Get-Process确认实际进程名:Get-Process | Where-Object {$_.Name -match "python"} - 架构兼容性问题:若你使用的是32位PowerShell,而Python是64位版本(反之亦然),WMI查询可能会遗漏进程。可以切换对应架构的PowerShell重试,或改用兼容性更好的
Get-CimInstance:Get-CimInstance Win32_Process -Filter "name like '%python%'"
替代的内存查看方案
如果仍无法通过Win32_Process捕获,直接用Get-Process查询内存更直观:
# 查看所有Python进程的物理内存消耗(工作集) Get-Process | Where-Object {$_.Name -match "python"} | Select-Object Name, Id, WorkingSet # 按脚本名称过滤进程,同时查看命令行参数 Get-Process | Where-Object {$_.CommandLine -like "*script.py*"} | Select-Object Name, Id, WorkingSet, CommandLine
若需要更易读的内存单位,可转换为MB:
Get-Process | Where-Object {$_.Name -match "python"} | Select-Object Name, Id, @{Name="WorkingSet(MB)"; Expression={[math]::Round($_.WorkingSet/1MB,2)}}
关于Win32_Process的补充说明
Win32_Process类理论上涵盖所有用户态Win32进程,不存在常规Python进程"不属于该类"的情况。多数查询失败的原因是名称匹配错误、架构不兼容,或是脚本执行完成后进程已退出。
内容的提问来源于stack exchange,提问作者Jayanth
相关产品推荐
相关产品推荐

