如何在Windows的CMD/PowerShell中获取命令历史的执行时间?
Windows命令执行时间的获取方法
当然可以获取Windows命令的执行时间详情,以下是几种实用的实现方法:
1. PowerShell原生历史记录
PowerShell自带命令历史功能,默认保存会话内的执行记录。使用Get-History命令可查看基础历史,若要显示执行时间,可通过格式化输出获取更详细信息:
Get-History | Select-Object Id, CommandLine, StartExecutionTime, EndExecutionTime
其中:
StartExecutionTime:命令开始执行的时间EndExecutionTime:命令执行结束的时间
通过这两个字段还能计算出命令的执行时长。
如果希望每次启动PowerShell都默认显示带时间的历史,可编辑PowerShell配置文件(执行$PROFILE查看路径),添加自定义输出规则。
2. 命令提示符(CMD)自定义日志记录
CMD自带的doskey确实没有时间记录功能,但可以通过批处理脚本实现命令日志的时间记录。示例脚本如下:
@echo off set LOGFILE=cmd_command_history.log :CMD_LOOP set /p "USER_CMD=>" echo [%date% %time%] %USER_CMD% >> %LOGFILE% %USER_CMD% goto CMD_LOOP
将脚本保存为cmd_with_history.bat,运行后会进入一个带日志记录的CMD会话:输入的命令会先被写入指定日志文件(包含当前日期和时间),再执行命令。后续查看日志文件即可获取所有命令的执行时间详情。
3. 事件查看器追踪进程创建事件
通过Windows安全日志可追踪所有进程的创建行为,包括CMD和PowerShell的命令执行:
- 打开组策略编辑器(运行
gpedit.msc),依次展开:计算机配置→Windows设置→安全设置→本地策略→审核策略 - 启用「审核进程创建」的成功审核选项
- 打开事件查看器,进入Windows日志→安全,筛选事件ID为
4688的记录
这类事件会包含进程启动时间、进程路径(如cmd.exe或powershell.exe)以及完整的命令行参数,从中可提取出命令的执行时间和具体内容。
内容的提问来源于stack exchange,提问作者Jonny Hotchkiss
相关产品推荐
相关产品推荐

