Powershell v4.0 Windows 7
此代码可以正常工作并检索我要查找的2个文件:
$dir = Get-Item -Path "C:\TestSource"
Get-ChildItem -Path "$($dir.FullName)\*" -File -Include *.txt,*.inf
此代码也有效,但它只找到txt文件:
$Dir = Get-Item -Path "C:\TestSource"
$Filter = "*.txt"
Get-ChildItem -Path "$($dir.FullName)\*" -File -Include $Filter
但是,这不会返回任何对象:
$Dir = Get-Item -Path "C:\TestSource"
$Filter = "*.txt,*.inf"
Get-ChildItem -Path "$($dir.FullName)\*" -File -Include $Filter
有必要将$ Filter变量构建到一个数组中,如下所示:
$Dir = Get-Item -Path "C:\TestSource"
$Filter = @("*.txt","*.inf")
Get-ChildItem -Path "$($dir.FullName)\*" -File -Include $Filter
Get-ChildItem上的Microsoft页面让我相信可以将变量与Get-ChildItem cmdlet一起使用。但是,除非变量是数组,否则为什么cmdlet不返回对象?由于显式字符串在第一个示例中起作用,第三个示例是否也应该起作用?
答案 0 :(得分:3)
Include
的参数始终是一个数组 - 在第一个例子中-Include *.txt,*.inf
传递一个双元素数组作为过滤器。
在第三个示例中,它是逗号分隔的字符串。如果你传递一个数组它应该工作:
$Dir = Get-Item -Path "C:\TestSource"
$Filter = "*.txt", "*.inf"
Get-ChildItem -Path "$($dir.FullName)\*" -File -Include $Filter
答案 1 :(得分:0)