2016-04-15 58 views
0

由於某種原因,我有一個腳本開始突然給我帶來麻煩。也許一個同事修改它,我不知道但我需要讓它再次運行。ForEach-Object:無法轉換'System.Object []'

這是我的腳本是造成問題:

$result = ForEach-Object $filter { 
    Select-String -Pattern $pattern | 
    Select-Object Path, LineNumber, Line } 
$result | Export-Csv "W:\test\search_results\$name.csv" -NoType 

這是$filter包含,如果我將其導出爲CSV,而不是$result

FullName 
\\omega.dce-eir.net\etm\ETMWinHeadPROD\CRA_WEB_UA\cra_htdocs\bt\fq-eng.html 
\\omega.dce-eir.net\etm\ETMWinHeadPROD\CRA_WEB_UA\cra_htdocs\bt\ll_fq-eng.html 
\\omega.dce-eir.net\etm\ETMWinHeadPROD\CRA_WEB_UA\cra_htdocs\bt\menu-eng.html

我收到此錯誤運行時我的代碼:

ForEach-Object : Cannot convert 'System.Object[]' to the type 'System.Management.Automation.ScriptBlock' required by parameter 'Process'. Specified method is not supported. 
At C:\Tools\menu.ps1:41 char:37 
+    $result = ForEach-Object <<<< $filter { 
    + CategoryInfo   : InvalidArgument: (:) [ForEach-Object], ParameterBindingException 
    + FullyQualifiedErrorId : CannotConvertArgument,Microsoft.PowerShell.Commands.ForEachObjectCommand

我在這個腳本中缺少什麼PT?它所需要做的就是在CSV中列出的文件上搜索字符串。

回答

2

$filter是對象列表,而不是腳本塊。你不能像ForEach-Object那樣使用它。將您的代碼更改爲:

$filter | Select-Object -Expand FullName | 
    ForEach-Object { Select-String -Path $_ -Pattern $pattern } | 
    Select-Object Path, LineNumber, Line | 
    Export-Csv "W:\test\search_results\$name.csv" -NoType 
+0

就是這樣!謝謝! – JonYork

相關問題