You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell日志写入异常排查:文件删除日志记录不符问题

问题根源与修正方案

问题出在哪?

  • 错误使用$error变量:$error是PowerShell的自动变量,存储的是当前会话中产生的所有错误对象,和是否有文件被删除没有直接关联。哪怕文件删除成功,只要会话中存在过错误(比如之前操作的残留错误),$error就不为空,导致始终触发“无文件”的日志分支。
  • 脚本存在拼写/格式错误:
    • gat-date是拼写错误,正确命令为Get-Date
    • 路径D\TEST缺少冒号,正确路径应为D:\TEST

修正后的脚本逻辑

正确的做法是先捕获符合删除条件的文件,再根据是否存在这类文件来记录日志:

# 配置参数
$logFilePath = "D:\TEST\Log $(Get-Date -f dd-MM-yyyy).txt"
$retentionDays = 7 # 替换为你的指定天数
$logFolder = "你的日志文件夹路径" # 替换为实际要清理的文件夹

# 获取需要删除的文件
$filesToRemove = Get-ChildItem -Path $logFolder -File | 
                 Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-$retentionDays) }

if ($filesToRemove.Count -gt 0) {
    # 执行删除并记录成功信息
    $filesToRemove | Remove-Item -Force
    "[$(Get-Date -f HH:mm:ss)] 成功删除 $($filesToRemove.Count) 个文件" *>> $logFilePath
} else {
    # 记录无符合条件文件的信息
    "[$(Get-Date -f HH:mm:ss)] 未找到需要删除的文件" *>> $logFilePath
}

关键说明

  • 通过Get-ChildItem结合Where-Object筛选出过期文件,直接通过集合数量判断是否有文件需要删除,逻辑更准确
  • 添加了时间戳,日志内容更清晰
  • 修正了原脚本中的拼写和路径错误

内容的提问来源于stack exchange,提问作者Дмитрий Захаров

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 01:01:07