documented PowerShell関数は、キャプチャされていないすべての出力を呼び出し元に返します。呼び出し元が返された値で何もしない場合、PowerShellは自動的にOut-Default
にそれを渡し、その後Out-Host
に転送します(Don Jonesのthis article参照)。
リダイレクト演算子を関数内の戻り値に使用すると、関数が何も返さないように戻り値が効果的に抑制されます。
あなたはこのような機能を持っている場合:
function testit {
return $true
}
と自身でそれを呼び出す:
testit
をPowerShellが暗黙のうちにこれを行います:
効果的
なり
testit | Out-Default
testit | Out-Host
あなたは変数
$thistest = testit
に戻り値をキャプチャする場合は値がコンソールに表示されて何もせずに変数に格納されます。
あなたはOut-Null
testit >$null
testit | Out-Null
に出力やパイプ、それをリダイレクトする場合は、戻り値は破棄され、何もコンソールに表示されません。
あなたはOut-Host
にパイプラインの最後に捕捉されていない出力を渡すのPowerShellのデフォルトの動作を防止したい場合は、このようOut-Default
をオーバーライドすることによってそうすることができます。@PetSerAlがで指摘したように
filter Out-Default { $_ | Out-Null }
または(このようなコメント):
filter Out-Default {}
しかし、あなたは再びフィルタを削除するまで、この変更は、現在のスコープ内のすべてのためにOut-Default
が無効になることに注意してください。フィルタを使用して、明示的にホストコンソールに出力を書き込みしない限り、何も表示されませんアクティブなときは、例えばGet-ChildItem
を行う場合:間違って何
Remove-Item function:Out-Default
:
あなたは、このようなフィルタを削除します'return $ true'または' $ true'だけで? – PetSerAl
あなたが何を求めているのか分かりません。通常はコンソールに表示されません。 'function test {$ true}; $ x = test'は画面上の出力を持たず、 '$ x'に戻り値を保持します。 – TessellatingHeckler
関数を呼び出すと戻ります。私が望まないのは、コンソールに 'True'を表示する' return $ true'です。 – bgmCoder