get-childitem中-include和-filter之间的区别

时间:2015-02-19 07:40:59

标签: powershell

有人可以解释get-childitem命令中-include和-filter选项之间的区别。

以下是我尝试执行的两段代码。它们都用于查找特定目录中的文本文件:

PS C:\Users\352997> get-childitem -path Desktop\Extras -filter *.txt


    Directory: C:\Users\352997\Desktop\Extras


Mode                LastWriteTime     Length Name
----                -------------     ------ ----
-a---        12/22/2014   4:05 PM        140 Expense_report.txt
-a---         1/14/2015   4:41 PM        211 Extras.txt
-a---         2/10/2015   2:46 PM        259 Learn Dutch.txt

PS C:\Users\352997> get-childitem -path Desktop\Extras -include *.txt

- 上述命令不产生结果----

2 个答案:

答案 0 :(得分:10)

  1. Filter参数由提供商实施。它很有效,因为在检索对象时适用。 Get-PSprovider命令行开关显示实现'过滤器'参数。例如,我的网站只有两个 system:ActiveDirectory和FileSystem

  2. Include参数由Powershell实现。它仅与Recurse参数一起使用(因为MSDN描述了here)。

  3. 有趣的是:

    get-childitem -path Desktop\Extras\ -include *.txt
    

    什么都不返回

    get-childitem -path Desktop\Extras\* -include *.txt
    

    返回* .txt文件列表

  4. 也许这些只是实施的细微差别。

    另见这篇优秀的博文:http://tfl09.blogspot.com/2012/02/get-childitem-and-theinclude-and-filter.html

答案 1 :(得分:0)

-filter应该比-include快。 -filter可以与Powershell 5.1中的短文件名匹配。