You need to enable JavaScript to run this app. PowerShell 检索近2天写入文件异常:$date1计算正确但未匹配到目标文件
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell 检索近2天写入文件异常:$date1计算正确但未匹配到目标文件

排查结论

核心异常来自Where-Object语句里的文件属性拼写错误,与$date1的计算值完全无关。

问题根因

  • 代码中用于比较文件修改时间的属性写的是$_.LastwrittenTime,但PowerShell中文件对象对应的修改时间属性,正式拼写为LastWriteTime(用的是动词Write的原形,不是过去式Written)。
  • PowerShell访问不存在的对象属性时不会抛出报错,只会静默返回$null值。也就是说你代码里写的这个属性,实际从每个文件中读取到的时间都是空值。
  • 当$null和DateTime类型的$date1执行-ge比较时,结果永远为False,所有目录下的文件都会被过滤掉。最终管道中没有任何内容传入Out-File,生成的Hiscoregames.txt就是0字节的空文件,看起来就像返回了0个匹配结果。

修正方案

把Where-Object行的属性名改成正确拼写即可:

Get-ChildItem -Path D:\HyperSpin\Emulators\Mame\hi | Where-Object {$_.LastWriteTime -ge $date1} | Out-File -FilePath D:\HyperSpin\Emulators\Mame\Hitxt\Hiscoregames.txt

排错验证技巧

如果后续遇到类似的属性匹配问题,可以先查看目录下单个文件的所有属性列表确认正确拼写:

# 取目录下第一个文件的所有属性成员列表
Get-ChildItem -Path D:\HyperSpin\Emulators\Mame\hi | Select-Object -First 1 | Get-Member -MemberType Property

输出列表中找到对应时间项的名称,就是准确的属性拼写,能避免类似的拼写踩坑。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.02 20:06:04