Power Shell エラー: パラメータをバインドできません

Power Shell エラー: パラメータをバインドできません

以下の PowerShell コマンドを実行しようとすると、エラーが発生しました。

コマンド :

*PS cert:\currentuser\authroot> gci | where subject -like "UTTN「*

エラーは以下のとおりです:

Where-Object: パラメータ 'FilterScript' をバインドできません。タイプ "System.String" の "subject" 値をタイプ "System.Management.Automation.ScriptBlock" に変換できません。行:1 文字:12 + gci | where <<<< subject -like "UTTN" + CategoryInfo: InvalidArgument: (:) [Where-Object]、ParameterBindingException + FullyQualifiedErrorId: CannotConvertArgumentNoMessage、Microsoft.PowerShell.Commands.WhereObjectCommand

私はWindows PowerShell ISEを使用しています。
実用的な解決策をいただければ幸いです。

答え1

PowerShell Vs.2 を使用しているようですが、そのバージョンでは新しい はサポートされていませんwhere syntax

PowerShell バージョン 1 および 2 では以下を使用します。

gci | where {$_.subject -like "UTN"}

式を中括弧で囲み、$_.プレフィックスを持つプロパティを参照する必要があります。

答え2

Peter Hahndorf 氏がすでにこの件に回答していますが、私はあなたが受け取ったエラー メッセージについて詳しく説明したいと思います。

「System.String」型の「subject」値を「System.Management.Automation.ScriptBlock」型に変換できません

stringこれは、を に変換できないことを示しscriptBlockwhere次のようなスクリプト ブロックが続く必要があることを意味します。{code here}

必ずエラー メッセージを読んで、その意味を解釈するようにしてください。

答え3

「-match」を使用して、件名のどこにでも存在する可能性のあるUTNを検索します。

gci | ?{$_.subject -match "UTN"}

「-like」を使用しても何も表示されない場合は、検索対象を引用符内のアスタリスクで囲んで入力してください。

gci | ?{$_.subject -like "*UTN*"}

関連情報