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

use*_*151 16 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
Run Code Online (Sandbox Code Playgroud)

- 上面的命令没有产生结果----

小智 11

  1. Filter参数由提供者实现.它很有效,因为在检索对象时适用.Get-PSprovider命令行开关显示实现'filter'参数的提供程序.例如,我的系统上只有两个提供程序:ActiveDirectory和FileSystem

  2. Include参数由Powershell实现.它仅适用会同Recurse参数(如MSDN描述这里).

  3. 有趣的是:

    get-childitem -path Desktop\Extras\ -include *.txt
    
    Run Code Online (Sandbox Code Playgroud)

    没有回报

    get-childitem -path Desktop\Extras\* -include *.txt
    
    Run Code Online (Sandbox Code Playgroud)

    返回*.txt文件列表

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

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

  • 关于您的要点 3。:如 https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.management/get-childitem?view=powershell-5.1 所述,'-Include 参数是仅当命令包含 -Recurse 参数或路径指向目录内容时才有效,例如 C:\Windows*,其中“*”通配符指定 C:\Windows 目录的内容。 (2认同)
  • 那么使用`-include`优于`-filter`有什么好处吗?我开始怀疑我是否应该完全放弃`-include`,因为`-filter`的级别较低,而不依赖于`-recurse`或`-path。\ *`。为什么“ -include”存在? (2认同)