あなたはそれがあったように、ビットバケットにものを送信する場合は、次の3つの方法のいずれかを使用します。
cmdlet | out-null
か...
[void]cmdlet
か...(をあなたのケースに関係します):
cmdlet -ErrorVariable $errorvar
cmdlet -WarningVariable $warningvar
すべての最新のシェルでは、「I/O」はストリーム経由で行われます。最も一般的なものは、標準出力(STDOUT)、標準エラー(STDERR)、および標準入力(STDIN)です。 PowerShellにはより多くの機能があります(デバッグ、冗長など)。ほとんどの場合、通常の出力は3つのメインストリームのうちの1つに入ります。ただし、冗長ストリームまたはデバッグストリームからデータをエミュレートすることもできます。ほとんどの相互作用は3つの主要な種類に基づいているので、コマンドレットからの出力を割り当てようとすると、基本的にSTDOUTから何かを割り当てようとしていますが、データはSTDOUTから来ています...
それが不可欠であるため、
try {
cmdlet -ERRORACTION STOP
} catch {
## Do something with $_ or $error[0] or nothing at all
}
-ErrorAction停止はすべて大文字である:実際にエラーを処理し、あなたはそれとそのための構文は、このようにあるトラップする必要があります。エラートラップはエラーの終了のみを捕捉します。 PowerShellは既定で非終了型(上記で説明したエラーアクション設定変数を使用しています)のエラーがあります。このため、このコマンドレットがエラーで終了するように明示的に定義する必要があります。これにより、必要に応じてエラートラップロジックがさまざまなエラー条件を処理できるようになります。
EDIT - コメントからの例を含む:私は実際にそれが変数に割り当てられている
try {
$sql = invoke-sqlcmd -ServerInstance $server\$instance -InputFile "$Path\checkDBEncryption.sql" -ErrorAction Stop
} catch {
## do nothing, leave this blank or leave this comment
}
、それはしかし、質問に関連していないようでした。いずれにしても、エラーは抑制されません。 – Joe
私はお詫びします。私は疑問を誤解しているに違いありません。これらのエラーはISE内での表示を抑止しようとしていますか? – Mitchell