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

PowerShell递归筛选30天前文件异常:仅返回单个文件问题排查

PowerShell筛选过期文件问题解决

你的脚本里已经用了-File参数,这个参数会让Get-ChildItem只返回文件,所以Where-Object里的-not $_.PSIsContainer完全是多余的,不过这不会导致筛选错误。子目录文件没被正确筛选,大概率是以下几个原因:

修正后的脚本

$folderTree = 'P:\Root\SubFolderRoot'
$refDate = (Get-Date).AddDays(-30)
# 遍历所有文件,自动跳过无权限访问的目录
Get-ChildItem -Path $folderTree -File -Recurse -ErrorAction SilentlyContinue | 
    Where-Object { $_.LastWriteTime -lt $refDate } |
    ForEach-Object { Write-Host $_.FullName }

排查步骤

  • 先确认所有文件是否被正确枚举:运行Get-ChildItem -Path $folderTree -File -Recurse | Measure-Object,看计数是否接近你说的2000个。如果差很多,说明有目录没被访问到,去掉-ErrorAction SilentlyContinue再跑一次,看有没有权限报错。
  • 手动验证文件的实际修改时间:随便找一个你认为应该被筛选出来的子目录文件,运行Get-ChildItem "P:\Root\SubFolderRoot\SubFolder1\某个文件" | Select-Object LastWriteTime,对比这个时间和$refDate的值(直接在控制台输$refDate就能看到),确认文件时间确实早于参考日期。
  • 检查是否有文件系统的特殊设置:比如某些文件的属性是只读或者系统文件?不过-File参数默认会包含这些,除非你加了-Attributes过滤。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 22:35:59