プロセスが複数のサーバーで実行されているかどうかを確認し、それを表にフォーマットしようとしています。
get-process -ComputerName server1,server2,server3 -name Explorer | Select-Object processname,machinename
それは簡単な部分です-プロセスが存在しない場合、またはサーバーが利用できない場合、Powershellは大きな醜いエラーを出力し、テーブルをめちゃくちゃにして続行しません。例
Get-Process : Couldn't connect to remote machine.At line:1 char:12 + get-process <<<< -ComputerName server1,server2,server3 -name Explorer | format-table processname,machinename
+ CategoryInfo : NotSpecified: (:) [Get-Process], InvalidOperatio nException + FullyQualifiedErrorId : System.InvalidOperationException,Microsoft.Power Shell.Commands.GetProcessCommand
どうすればこれを回避できますか?プロセスが利用できない場合や実行中でない場合に通知を受け取りたい場合。
コマンドに-ErrorAction SilentlyContinue
を追加します。
エラーではなく、未処理の例外である場合は、例外をキャッチするために-EV Err -EA SilentlyContinue
を追加する必要があります。 (EA
はErrorAction
のエイリアスです)
次に、$Err[0]
を見て、スクリプトのエラーを評価できます。
短い回答:コードの先頭に$ErrorActionPreference = 'SilentlyContinue'
を追加すると、すべてのコマンドに-ErrorAction SilentlyContinue
を追加する必要がなくなります
長い答え:https://www.gitbook.com/book/devopscollective/the-big-book-of-powershell-error -handling/details