最近我創建通過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中也找到類似的東西,但在官方文檔中找不到。