如何用PowerShell的New-Timespan结合进程StartTime计算运行时长?
使用New-TimeSpan计算记事本进程运行时长的实现方案
当然可以通过指定New-TimeSpan的起始时间参数,并用点表示法传入记事本进程的StartTime属性!这是PowerShell里非常直观的操作,我来给你一步步演示:
1. 基础实现步骤
首先你已经拿到了记事本进程对象:
$np = Get-Process notepad
接下来直接用-Start参数指定起始时间为进程的启动时间,创建Time变量:
# 生成TimeSpan对象,记录从进程启动到当前时间的时长 $Time = New-TimeSpan -Start $np.StartTime
2. 创建seconds变量的两种方式
你提到要创建第三个seconds变量,这里分两种常用场景:
- 获取总运行秒数(包含小数,精确到毫秒级别):用
TotalSeconds属性,它会把整个TimeSpan转换成总秒数:$seconds = $Time.TotalSeconds - 获取当前分钟段内的秒数(0-59的整数):用
Seconds属性,它只返回TimeSpan里秒部分的数值:$seconds = $Time.Seconds
3. 注意事项
- 如果系统中运行了多个记事本进程,
$np会是一个进程对象数组,直接用$np.StartTime会报错。这种情况可以指定处理某一个进程,比如第一个:
或者循环遍历所有记事本进程,逐个计算运行时长。$Time = New-TimeSpan -Start $np[0].StartTime - 如果记事本进程没有运行,
$np会为空,执行New-TimeSpan时会报错,建议先判断进程是否存在:if ($np) { $Time = New-TimeSpan -Start $np.StartTime $seconds = $Time.TotalSeconds } else { Write-Host "没有找到运行中的记事本进程" }
内容的提问来源于stack exchange,提问作者Masum Billah
相关产品推荐
相关产品推荐

