PowerShell脚本开发:如何获取进程PID与启动时间并格式化输出
PowerShell脚本修正:显示进程PID与启动时间
原脚本问题分析
你之前的脚本里使用了Format-Table,这个命令的作用是生成格式化的输出内容,它返回的是格式化指令对象而非实际的时间值,所以变量$time才会存储一堆Microsoft.PowerShell.Commands.Internal.Format.*类型的数据,无法直接提取时间字符串。
修正后的脚本
$procName = $args[0] # 获取指定名称的所有进程实例,静默忽略不存在的情况 $processes = Get-Process -Name $procName -ErrorAction SilentlyContinue if ($processes) { # 遍历每个进程对象 foreach ($proc in $processes) { # 提取PID,将StartTime格式化为指定字符串 $id = $proc.Id $startTime = $proc.StartTime.ToString("yyyy-MM-dd h:mm:ss tt") # 按要求格式输出 Write-Host "$id $procName Started $startTime" } } else { Write-Host "进程不存在" }
关键说明
- 直接从
Get-Process返回的进程对象中提取Id(PID)和StartTime属性,无需额外的格式化命令转换。 StartTime是DateTime类型,用ToString("yyyy-MM-dd h:mm:ss tt")可以直接生成你需要的时间字符串格式。- 用
foreach遍历所有进程实例,自然支持多进程应用(如Chrome)的批量输出。 - 先将进程对象存入
$processes变量,避免重复调用Get-Process,提升脚本效率。
内容的提问来源于stack exchange,提问作者Franco Reyes
相关产品推荐
相关产品推荐

