2017-02-20 214 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