web-dev-qa-db-ja.com

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

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

コマンド:

* PS cert:\ currentuser\authroot> gci | where subject -like "[〜#〜] utn [〜#〜]" *

エラーは以下です:

Where-Object:パラメータ 'FilterScript'をバインドできません。タイプ「System.String」の「subject」値をタイプ「System.Management.Automation.ScriptBlock」に変換できません。行:1 char:12 + gci | where <<<< subject -like "[〜#〜] utn [〜#〜]" + CategoryInfo:InvalidArgument:(:) [Where-オブジェクト]、ParameterBindingException + FullyQualifiedErrorId:CannotConvertArgumentNoMessage、Microsoft.PowerShell.Commands.WhereObjectCommand

Windows PowerShell ISEを使用しています。
実行可能なソリューションは高く評価されています

3
mustaque

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

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

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

式を中括弧で囲み、$_.接頭辞が付いたプロパティを参照する必要があります。

8
Peter Hahndorf

Peter Hahndorfはすでにこれに答えていますが、受け取ったエラーメッセージをさらに詳しく説明します。

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

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

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

0
Vasili Syrakis

「-match」を使用して、件名の任意の場所にある可能性のあるUTNを検索します

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

「-like」を使用しても何も表示されない場合は、探しているものを引用符の内側のアスタリスクの間に置きます。

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