少なくとも結果はありません。 1つは配列に比較演算子を適用する場合(つまり、各配列要素に適用され、それが返される部分が$true
を返す場合)です。もう1つは、フィルタリングを行うコマンドレットに配列を渡すことです。結果は同じです。
あなたは創造的な取得し、さらに別の方法で同じことを解決することができます。左側のオペランドが配列ないとき
$myarray | foreach { if ($_ -match 'b') { $_ } }
注しかし、ことは、結果が異なります。
PS Home:\> ,'b' -match 'b'
b
PS Home:\> 'b' -match 'b'
True
変数が配列かどうかわからない場合は、次のように強制してください:
@($foo) -match 'b'
または正しいことをするWhere-Object
を使用してください。
個人的に私はコンソールにPowerShellコードを書き込むときに、直接演算子を使用する傾向があります。
(gc file) -match 'regex'
しかし、必要なスクリプトを書くとき、私はWhere-Object
で「正しい」方法を使用します(私は実際にも、より頻繁にSelect-String
を使用して開始する必要があります。):それだけでなく、素敵な簡潔なgrep
同等になり頑強であるか、または他の人が読書/維持しなければならない。
完全にああを行うことができます使用され、私は結果が常に同じになるように見えたが、私はいくつかの詳細や特徴点があることがなかったことを確認したいと言うことができますそれらを使用時に区別しました。 おかげで(特に編集のために)、それは私のために物事をクリア! –
ちょうど私の2セント、私は 'Select-String'が非常に速いことを発見しました。 – sodawillow
@sodawillow好奇心、このようなもののために 'Select-String'を利用するにはどうすればいいですか?私はそれについて少し読んだが、私はそれが何をしているのかよく分からない。 –