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

PowerShell删除脚本中Out-File写入日志为空的解决方法

故障原因

日志为空的核心原因是管道对象属性调用错误:当你使用Select-Object -ExpandProperty FullName处理管道结果后,传入ForEach-Object脚本块的$_已经是字符串类型的完整路径值,不再是包含FullName属性的文件/目录对象,此时执行$_.FullName会返回空值,写入日志的内容自然为空,而删除操作因为直接接收了路径字符串可以正常执行。

修复后完整代码
# 定义待清理目录
$Folder5 = "E:\What\Ever"
# 定义日志存储路径
$logPath = "C:\What\Ever\deleteditems.txt"

# 执行清理与日志记录
Get-ChildItem $Folder5 -Recurse -Force -ea 0 | Where-Object {
    $_.psiscontainer -and $_.fullname -notmatch 'coolfiles' -and 
    $_.LastWriteTime -lt (Get-Date).AddDays(-90)
} | Select-Object -ExpandProperty FullName | ForEach-Object {
    # 先记录日志再执行删除,避免删除报错时记录丢失
    $_ | Out-File $logPath -Encoding ASCII -Append
    $_ | del -Force -Recurse -ea 0
}

注:代码中del是PowerShell内置命令Remove-Item的别名,两种写法运行效果完全一致。

关键修改说明
  • 修正日志写入的取值逻辑:去掉了$_.FullName的无效属性调用,直接将当前管道对象(即已展开的完整路径字符串)写入日志
  • 调整操作顺序:将日志写入步骤移到删除操作之前,避免删除过程抛出异常时对应条目未被记录
  • 增加删除命令的错误静默参数:删除单个对象失败(如文件被占用、权限不足)时不会中断整个清理脚本的运行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 10:36:20