情况:
Get-ChildItem $Path -Filter *.dll
适合我
这有效:
$Path = "$env:windir\system32\*"
$GuyArray = @("*.dll", "*.exe")
Get-ChildItem $Path -Include $GuyArray
但我无法做到这一点:
$Path = "$env:windir\system32\*"
$GuyArray = @("*.dll", "*.exe")
Get-ChildItem $Path -Filter $GuyArray
错误讯息:
无法将'System.Object []'转换为参数'Filter'所需的'System.String'类型。不支持指定的方法。
问题:
-Include
支持多个值,但-Filter
只允许一个值?Get-Help gci
发现这个?答案 0 :(得分:3)
这是否意味着
-Include
支持多个值,但-Filter
只允许一个值?
是
如果上述解释是正确的,有没有办法从
Get-Help gci
发现这个?
是的,但是Get-Help gci -Parameter Filter
没有获得太多信息。但你仍然可以看到它是一个字符串,而不是一个数组。至于细节,Filter
是特定于提供者的过滤器。 Get-Help gci
无法告诉您有关特定提供程序中的实现的任何信息。理论上,Get-Help FileSystem
(关于此提供者的帮助)应该已经解释了这一点。
P.S。另请注意,此过滤器使用的是CMD通配符规则,而不是PowerShell威尔卡规则。
答案 1 :(得分:1)
使用Get-Help
:
> get-help Get-ChildItem
NAME
Get-ChildItem
SYNTAX
Get-ChildItem [[-Path] <string[]>] [[-Filter] <string>] [-Exclude <string[]>] [-Force] [-Include <string[]>] [-Name] [-Recurse] [-UseTransaction] [<CommonParameters>]
SYNTAX部分包含参数类型,您可以从中看到Filter
是一个字符串,Path
是一个数组。
答案 2 :(得分:1)
问题1:
是。 -Filter
仅接受[string]
作为输入。 -Include
接受[String[]]
。
问题2:
Get-help get-childitem -parameter filter
给出了
-Filter <string>
...explanation...
Get-help get-childitem -parameter include
给出了
-Include <string[]>
...explanation...