次の PowerShell 割り当てステートメントを検討してください。
$rc = (gci -r -fi *.rar)
ディレクトリ構造に rar ファイルが存在する場合はecho $?
、次のように表示されます。
Directory: C:\file tests
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 7/22/2012 7:09 PM 3699776 somefile.rar
罰金。次に、この PowerShell の if ステートメントについて考えてみましょう。
if (gci -r -fi *.rar)
{
echo "Rar files found"
}
else
{
echo "No rar files"
}
if ステートメントでは、gci コマンドレットからの戻り値はブール値として扱われます。ただし、前の割り当てステートメントの場合、同じコマンドレットからの戻り値は文字列出力を生成しました。
PS がオブジェクト シェルであることは知っています。コンテキストに応じてコマンドレットの動作が異なることを理解しています。しかし、私が理解していないのは、これがどのように達成され、どのメカニズムが使用されているかです。
具体的には: gci からの戻り値をブール値として処理できるようにするifステートメントで使用される魔法は何ですか? そのメカニズムを別の場所 (if ステートメント以外) で使用したい場合、どうすればよいでしょうか? 「ブール値へのキャスト」演算子のようなものはありますか? 例えば
$rc = (Cast following to boolean)(gci -r -fi *.rar)