情况:
Get-ChildItem $Path -Filter *.dll 为我工作
这有效:
$Path = "$env:windir\system32\*"
$GuyArray = @("*.dll", "*.exe")
Get-ChildItem $Path -Include $GuyArray
Run Code Online (Sandbox Code Playgroud)但是我无法使它工作:
$Path = "$env:windir\system32\*"
$GuyArray = @("*.dll", "*.exe")
Get-ChildItem $Path -Filter $GuyArray
Run Code Online (Sandbox Code Playgroud)错误信息:
无法将“ System.Object []”转换为参数“ Filter”所需的类型“ System.String”。不支持指定的方法。
问题:
-Include支持多个值,但-Filter仅允许一个值?Get-Help gci呢?这是否意味着
-Include支持多个值,但-Filter只允许一个值?
是的。
如果上述解释是正确的,我有没有办法从中发现这一点
Get-Help gci?
是的,但是您无法通过 获得太多信息Get-Help gci -Parameter Filter。但你仍然可以看到它是一个字符串,而不是一个数组。至于细节,Filter是特定于提供商的过滤器。Get-Help gci无法告诉您有关特定提供商的实施的任何信息。理论上,Get-Help FileSystem(有关该提供商的帮助)应该已经解释了这一点。
PS 另请注意,此过滤器使用 CMD 通配符规则而不是 PowerShell 通配符规则。