为何PowerShell删除90天以上文件时会误删子文件夹内文件?
问题原因及解决办法
你的代码会删除子目录中符合条件的文件,核心原因是用了Get-ChildItem的-Recurse参数——这个参数的作用就是递归遍历目标路径下的所有层级子目录,它会把C:\powershell根目录,以及所有嵌套子文件夹里的文件都扫一遍,自然会把这些位置里符合时间条件的文件也筛选出来删除。
如果只想处理C:\powershell根目录下的直接文件,不要碰子目录,只需要去掉-Recurse参数就行。另外建议加上-File参数,避免误删符合时间条件的文件夹(Get-ChildItem默认会返回文件和文件夹对象),修正后的代码如下:
Get-ChildItem -Path "C:\powershell" -File | Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-90) } | Remove-Item
内容的提问来源于stack exchange,提问作者ConeHealth
相关产品推荐
相关产品推荐

