2016-04-15 40 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 

これは私がCSVではなく$resultにエクスポートした場合$filterが含まれているものです:

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

関連する問題