吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1205|回复: 18
收起左侧

[其他原创] PowerShell监视指定程序资源脚本

[复制链接]
bgwu666 发表于 2024-6-11 18:45

写在前面

无聊逛论坛,看到一篇悬赏贴,要求监控Windows上软件的资源占用情况并输出日志,于是简单梳理一下思路,写了一个PowerShell脚本,满足所要求的功能。

使用方法

在代码中指定位置自行替换需要监控的进程名称、日志的保存路径、记录周期。

# 设置要监视的进程名称
$processName = "Notepad3"

# 设置日志文件的路径(CSV格式)
$logFilePath = "C:\Users\52Pojie\Desktop\ProcessMonitorLog.csv"

# 设置检查进程资源使用的间隔时间(秒)
$checkInterval = 5

日志以时间、CPU占用、内存占用为标题,文件后缀为.csv。

完整代码

# 设置要监视的进程名称
$processName = "Notepad3"

# 设置日志文件的路径(CSV格式)
$logFilePath = "C:\Users\52Pojie\Desktop\ProcessMonitorLog.csv"

# 设置检查进程资源使用的间隔时间(秒)
$checkInterval = 5

# 检查进程是否存在
$process = Get-Process -Name $processName -ErrorAction SilentlyContinue

# 如果进程存在,开始监视
if ($process) {
    Write-Host "开始监视进程:$processName"

    # 创建或清空日志文件
    "时间,CPU使用率,内存使用(MB)" | Out-File $logFilePath

    # 监视进程资源使用的循环
    while ($true) {
        # 获取当前时间
        $currentTime = Get-Date -Format "yyyy-MM-dd HH:mm:ss"

        # 获取进程的CPU和内存使用情况
        $cpuUsage = $process.CPU
        $memoryUsage = $process.WS / 1MB

        # 格式化日志信息为CSV格式
        $logInfo = "$currentTime,$cpuUsage,$memoryUsage"

        # 写入日志信息到CSV文件
        $logInfo | Out-File $logFilePath -Append

        # 输出到控制台
        Write-Host $logInfo

        # 等待指定的时间间隔
        Start-Sleep -Seconds $checkInterval

        # 检查进程是否仍然存在
        $process = Get-Process -Name $processName -ErrorAction SilentlyContinue
        if (-not $process) {
            Write-Host "进程 $processName 已结束。监视停止。"
            break
        }
    }
} else {
    Write-Host "未找到进程:$processName"
}

运行截图

运行截图
运行结果图

可能会遇见的问题

  • Excel打开CSV文件,所有内容都挤在一个单元格内。
    解决办法:选中第一列,点击工具栏-数据-分列。
  • 代码保存后运行乱码。
    解决办法:将文件保存为ANSI编码。
  • PowerShell提示脚本被禁止执行。
    解决办法:管理员模式运行PowerShell,输入Set-ExecutionPolicy RemoteSigned,执行命令时,系统会提示我们确认更改,输入 Y 并回车以确认。
    PowerShell解除限制

写在最后

制作不易,请点点支持,感激不尽!   : )

免费评分

参与人数 6吾爱币 +12 热心值 +6 收起 理由
苏紫方璇 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
liwenbiaogg + 1 + 1 非常实用,感谢分享
kissboss + 1 + 1 我很赞同!
dongtian123sss + 1 + 1 热心回复!
嘚瑟挨顿揍 + 1 + 1 谢谢@Thanks!
快乐王子 + 1 + 1 热心回复!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

嘚瑟挨顿揍 发表于 2024-6-12 16:55
bgwu666 发表于 2024-6-12 16:42
正常使用方式是把代码保存到后缀为.ps1的文件后运行。
@嘚瑟挨顿揍,你的运行成功了么?

我的可以了,我用的你截图的那个软件,把代码复制进去,运行就可以了
 楼主| bgwu666 发表于 2024-6-12 16:35
ooO差不多先生 发表于 2024-6-12 10:34
我也是这个错误,是版本问题吗

下面是我的PowerShell相关版本信息,可以参考下。

PowerShell输入$psversiontable查询版本信息。

Name Value
PSVersion 5.1.19041.4412
PSEdition Desktop
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
BuildVersion 10.0.19041.4412
CLRVersion 4.0.30319.42000
WSManStackVersion 3.0
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1

gusong125 发表于 2024-6-12 00:12
starpatrick 发表于 2024-6-12 01:13
谢谢,非常有用
waishr 发表于 2024-6-12 07:51
感谢分享,留存备用
嘚瑟挨顿揍 发表于 2024-6-12 08:34
大佬  报错了
1718152462160.jpg
wujie9909 发表于 2024-6-12 09:03
感谢大佬分享
dongtian123sss 发表于 2024-6-12 09:25
感谢分享
kidll 发表于 2024-6-12 09:53
感谢分享
 楼主| bgwu666 发表于 2024-6-12 10:15
嘚瑟挨顿揍 发表于 2024-6-12 08:34
大佬  报错了

检查一下代码是不是少右括号了?
此外,看到第一行输出的中文乱码了,文章中有提到解决办法。
嘚瑟挨顿揍 发表于 2024-6-12 10:29
bgwu666 发表于 2024-6-12 10:15
检查一下代码是不是少右括号了?
此外,看到第一行输出的中文乱码了,文章中有提到解决办法。

好的 谢谢
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-13 02:36

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表