以下の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を使用しています。
実行可能なソリューションは高く評価されています
PowerShell Vs.2を使用しているようですが、そのバージョンでは新しいwhere syntax
がサポートされていませんでした。
PowerShellのバージョン1および2では次を使用します。
gci | where {$_.subject -like "UTN"}
式を中括弧で囲み、$_.
接頭辞が付いたプロパティを参照する必要があります。
Peter Hahndorfはすでにこれに答えていますが、受け取ったエラーメッセージをさらに詳しく説明します。
タイプ「System.String」の「subject」値をタイプSystem.Management.Automation.ScriptBlockに変換できません
これは、string
をscriptBlock
に変換できないことを示しています。これは、where
の後に次のようなスクリプトブロックが続く必要があることを意味します:{code here}
エラーメッセージを必ず読んで、その意味を解釈してください。
「-match」を使用して、件名の任意の場所にある可能性のあるUTNを検索します
gci | ?{$_.subject -match "UTN"}
「-like」を使用しても何も表示されない場合は、探しているものを引用符の内側のアスタリスクの間に置きます。
gci | ?{$_.subject -like "*UTN*"}