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

PowerShell中获取Remove-Item命令删除操作日志的简便方案咨询

PowerShell 删除旧文件新增日志极简实现方案

你可以直接在原有管道链中插入日志写入逻辑,不需要预先把待删除文件存入数组,代码改动量极小,执行逻辑和原有脚本完全一致。

首先注意你现有脚本存在一处语法错误:第三个过滤条件里_.LastWriteTime缺少$标识符,需修正为$_.LastWriteTime。


实现代码

# 配置项:删除阈值、日志路径
$DeleteDate = (Get-Date).AddDays(-10)
$logPath = "C:\FileDelete_Log.log"
$path1 = "\\path1\*.tibx*"
$path2 = "\\path2\*Backup Set*"
$path3 = "\\path3\*.tibx*"

# 写入日志头:记录本次执行起始时间
Add-Content -Path $logPath -Value "`n=== 清理任务开始执行: $(Get-Date -Format 'yyyy-MM-dd HH:mm:ss') ==="

# 原有删除逻辑仅插入一行日志处理代码,后续直接接Remove-Item即可
Get-ChildItem $path1 | Where {$_.LastWriteTime -lt $DeleteDate} | ForEach-Object {
    Add-Content -Path $logPath -Value "删除文件: $($_.FullName) 最后修改时间: $($_.LastWriteTime.ToString('yyyy-MM-dd HH:mm:ss'))"
    $_ # 把文件对象继续向下传递给Remove-Item
} | Remove-Item -Force

Get-ChildItem $path2 -Recurse | Where {$_.LastWriteTime -lt $DeleteDate} | ForEach-Object {
    Add-Content -Path $logPath -Value "删除文件: $($_.FullName) 最后修改时间: $($_.LastWriteTime.ToString('yyyy-MM-dd HH:mm:ss'))"
    $_
} | Remove-Item -Force  

Get-ChildItem $path3 | Where {$_.LastWriteTime -lt $DeleteDate} | ForEach-Object {
    Add-Content -Path $logPath -Value "删除文件: $($_.FullName) 最后修改时间: $($_.LastWriteTime.ToString('yyyy-MM-dd HH:mm:ss'))"
    $_
} | Remove-Item -Force

# 写入日志尾:记录执行完成时间
Add-Content -Path $logPath -Value "=== 清理任务执行完成: $(Get-Date -Format 'yyyy-MM-dd HH:mm:ss') ==="

方案优势

  • 无需预先缓存待删除文件到数组,大数量文件场景下无额外内存开销
  • 日志写入和删除操作串行执行,不会出现日志记录和实际删除结果不一致的问题
  • 仅在原有管道中增加日志写入步骤,原有业务逻辑完全不变

如果需要同时在控制台输出删除记录,把Add-Content替换为Tee-Object -FilePath $logPath -Append即可同时实现控制台输出+日志写入。


内容的提问来源于stack exchange,提问作者Dati

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 06:12:01