2017-02-20 115 views
1

我想传递字符串变量$FileExtension,如果我传递一个值,如$FileExtension = "*.txt"那么它工作正常,但如果多个值,如$FileExtension = "*.txt,*.log"那么它失败了。传递多个值参数

如何解决这个问题?

Get-ChildItem *.* -Include $FileExtension | Select-String -pattern "$SearchString" | group path | 
select name | Out-File $OutputLocation'\'$OutputFile 

回答

1

-Include参数需要string[]这样你就可以简单的创建一个字符串数组是这样的:

$FileExtension = "*.txt","*.log" 
1

@MartinBrandl的解决方案是获得更好的性能,因为它直接进入GET-ChildItem命令。但是通过这个解决方案,你必须在get-childitem命令的路径文件中有“*”。请注意,您可以将-file选项用于get-childitem以获得更好的性能。

另一个解决方法就是使用其中的过滤器扩展这样的命令:

$fileextension=".ini",".jpg" 
Get-ChildItem "c:\temp" -file | where Extension -in $fileextension 

您可以使用-lisrt到选择字符串命令,然后就可以像删除这组命令:

Get-ChildItem "*.*" -file -Include $fileextension | 
    Select-String -pattern "$SearchString" -List | 
     select Path | 
      Out-File $OutputLocation'\'$OutputFile 
+0

如果我想搜索子目录,我该如何在您的代码中应用? – user1902849

+0

添加-recurse选项到get-childitem命令 – Esperento57