最近我创建通过PowerShell的有关地处C:\Windows\winsxs
文件夹unsing的Get-ChildItem
的Filter
参数*.inf
文件报告(见官方文档大约this cmdlet and its parameters),如:Get-ChildItem实现过滤器参数中的FileSystem Provider错误?
$infFiles = Get-ChildItem -Path C:\Windows\winsxs -Filter *.inf -Recurse
但是我已经注意到了这一点,结果中也包含具有其他文件扩展名的文件,如.inf_loc
或.inf_dbf42768
。
在另一方面,Include
参数正常工作,只返回.inf
文件:
$infFiles = Get-ChildItem -Path C:\Windows\winsxs -Include *.inf -Recurse
我用PS版3和4测试的现象,结果发现,如果你的扩展正在寻找具有正好3个字符的文件,即使这些文件具有更长的扩展名,也会返回以相同的3个字符开头的扩展名。如果您要查找的分机短于或长于3个字符,根据我的经验,至少没有这样的问题。
虽然表现在我的情况并不重要,因为据我所知,使用Filter
参数会更有效,比Include
参数,因为它在提供商等级进行滤波已经,如cmdlet description讨论:
筛选器比其他参数更有效,因为提供 检索对象的时候,而不是拥有Windows 他们被检索后PowerShell的过滤器的对象适用于他们。
和here:
...筛选参数产生早,过滤, 而-包括后来的早期筛选!两种方法之间的性能差异 事实证明是显着的!
它是一个记录的行为/错误?我在the post mentioned before中也找到类似的东西,但在官方文档中找不到。