PowerShell脚本查询文件夹树久未访问文件导出CSV报错求助
问题解决:PowerShell筛选过期文件脚本参数错误
错误根源
你两次报错的核心是误用了-ExpandProperty参数:
-ExpandProperty的作用是展开单个包含集合的属性(比如把数组属性拆成单个元素),它只能接收单个字符串属性名,不能传多个属性。- 你的需求只是选择文件的
Name和LastAccessTime属性,完全不需要用这个参数,直接用Select-Object选择属性即可。 - 第二次尝试里的
-ExpandProperty Expand - Property属于语法错误,完全不符合Select-Object的参数规则。
修正后的正确脚本
# 目标文件夹路径,直接写文件夹即可,*.*可省略 $Folder = 'D:\Temp' # 测试用:筛选访问时间早于10天后的文件(你实际需求要改成AddDays(-365),筛选365天前的文件) $lastAccessDate = (Get-Date).AddDays(10) Get-ChildItem $Folder -Recurse -File | Where-Object { $_.LastAccessTime -lt $lastAccessDate } | Select-Object Name, LastAccessTime | Export-CSV "C:\Temp\FileListing.csv" -NoTypeInformation -Encoding UTF8
额外优化点
- 加上
-File参数:只筛选文件,排除文件夹(如果需要包含文件夹可以去掉该参数)。 - 修正日期逻辑:你要找LastAccessTime超过365天的文件,应该用
(Get-Date).AddDays(-365),而不是AddDays(10)(后者逻辑反了,是筛选访问时间早于10天后的文件)。
验证说明
运行修正后的脚本后,会在C:\Temp\FileListing.csv生成符合要求的文件列表,包含文件名和最后访问时间。
内容的提问来源于stack exchange,提问作者Ken
相关产品推荐
相关产品推荐

