Get-ChildItem-筛选器数组

Guy*_*mas 5 powershell filter

情况:

  1. Get-ChildItem $Path -Filter *.dll 为我工作

  2. 这有效:

    $Path = "$env:windir\system32\*"
    $GuyArray = @("*.dll", "*.exe")
    
    Get-ChildItem $Path -Include $GuyArray
    
    Run Code Online (Sandbox Code Playgroud)
  3. 但是我无法使它工作:

    $Path = "$env:windir\system32\*"
    $GuyArray = @("*.dll", "*.exe")
    
    Get-ChildItem $Path -Filter $GuyArray
    
    Run Code Online (Sandbox Code Playgroud)

错误信息:

无法将“ System.Object []”转换为参数“ Filter”所需的类型“ System.String”。不支持指定的方法。

问题:

  1. 这是否意味着-Include支持多个值,但-Filter仅允许一个值?
  2. 如果以上解释正确,有没有办法我可以从中发现Get-Help gci呢?

Rom*_*min 4

这是否意味着-Include支持多个值,但-Filter只允许一个值?

是的。

如果上述解释是正确的,我有没有办法从中发现这一点Get-Help gci

是的,但是您无法通过 获得太多信息Get-Help gci -Parameter Filter。但你仍然可以看到它是一个字符串,而不是一个数组。至于细节,Filter是特定于提供商的过滤器。Get-Help gci无法告诉您有关特定提供商的实施的任何信息。理论上,Get-Help FileSystem(有关该提供商的帮助)应该已经解释了这一点。

PS 另请注意,此过滤器使用 CMD 通配符规则而不是 PowerShell 通配符规则。