PowerShell统计X天前子文件夹数量时返回0的问题排查
问题分析与修正
你的脚本存在两个关键错误:
- 属性访问逻辑错误:你第一步通过
$(ls c:\temp).LastWriteTime已经提取了文件夹的最后写入时间,此时管道中流动的是DateTime类型的对象,而非文件夹对象。所以在Where脚本块里,$_.LastWriteTime是无效的——当前的$_本身就是最后写入时间,不存在LastWriteTime子属性。 - 筛选条件逻辑相反:你要筛选的是早于指定天数的文件夹,但脚本里用了
-ge(大于等于),这会筛选出最近2天内修改的内容,和需求完全相反,应该用-lt(小于)。
修正后的脚本(两种可选写法)
写法1:修正原脚本逻辑
$(ls c:\temp).LastWriteTime | Where{$_ -lt (Get-Date).AddDays(-2)} | Measure-Object | select -Expand Count
写法2:更规范的PowerShell写法(推荐)
直接操作文件夹对象,避免提前提取属性导致的混淆:
ls c:\temp | Where{$_.LastWriteTime -lt (Get-Date).AddDays(-2)} | Measure-Object | select -Expand Count
内容的提问来源于stack exchange,提问作者uberdude
相关产品推荐
相关产品推荐

