如何查询旧.ps1脚本的最后执行时间?
查询PowerShell脚本(.ps1)的最后执行时间
以下是几种可行的方法,按可靠性和实用性排序:
1. 检查Windows事件日志
Windows会记录PowerShell的执行相关事件,这是相对可靠的途径:
- 手动查看:打开事件查看器,导航到
Windows日志 > 应用程序,筛选事件ID403(PowerShell会话结束)或800(脚本执行详细记录),查找包含.ps1的事件,查看TimeCreated字段。 - 用PowerShell快速筛选:
注意:如果系统未启用PowerShell模块日志/脚本块日志,可能无法找到Get-WinEvent -FilterHashtable @{LogName='Application'; ID=403,800} | Where-Object {$_.Message -match '\.ps1'} | Select-Object TimeCreated, Message | Sort-Object TimeCreated -Descending800事件,需要先在组策略或PowerShell设置中启用。
2. 查看文件的最近访问时间
Windows默认禁用了文件最近访问时间的更新(为了性能优化),如果未修改过设置,这个时间可能不准确:
- 先检查当前设置:
返回fsutil behavior query disablelastaccessdisablelastaccess = 1表示禁用,若要启用(需重启系统生效):fsutil behavior set disablelastaccess 0 - 启用后,查看脚本文件的访问时间:
Get-ChildItem "C:\目标脚本路径\*.ps1" | Select-Object Name, LastAccessTime | Sort-Object LastAccessTime -Descending
3. 检查PowerShell历史记录
本地用户的PowerShell执行历史默认存储在以下路径:
- PowerShell 7+:
$env:USERPROFILE\Documents\PowerShell\ConsoleHost_history.txt - PowerShell 5.1:
$env:USERPROFILE\Documents\WindowsPowerShell\ConsoleHost_history.txt - 也可以用命令直接获取历史文件路径:
(Get-PSReadLineOption).HistorySavePath
搜索历史中的脚本执行记录:
Get-Content (Get-PSReadLineOption).HistorySavePath | Select-String '\.ps1' | Select-Object -Last 10
注意:历史记录可能被用户手动清理,或者未保存完整的执行路径,仅供参考。
4. 检查脚本自带的执行日志
如果你的脚本在编写时添加了执行日志功能(比如每次执行时将时间写入特定日志文件),直接查看对应的日志文件是最准确的方式。
内容的提问来源于stack exchange,提问作者M.1.B
相关产品推荐
相关产品推荐

