web-dev-qa-db-ja.com

PowerShellスクリプトからplinkを使用して「アクセス拒否」をキャッチする方法

次のコマンドを呼び出すPowerShellスクリプトがあります。

plink -batch -ssh $defUser@$srv -pw $defPassword -m $executeCommandFile

$ defPasswordが常に同じ/正しいとは限らないという問題。 plinkからアクセス拒否エラーをキャッチするにはどうすればよいですか?

このようなもの:

if (plink -batch -ssh $defUser@$srv -pw $defPassword -ne "Access denied") 
    \\execute -m $executeCommandFile
else
    \\use different $defPassword(for example $defPassword2) and then execute

Try\catchのようなものだと思いますが、plinkを使用したパスワード

2
igor

"Access is denied"メッセージがエラーストリームに表示されます。 Windows PowerShellリダイレクト演算子 を使用できます。例:次のようになります。

$aux = . plink -batch -ssh $defUser@$srv -pw $defPassword -m $executeCommandFile *>&1
if ( $aux -match '^Access.*denied' ) {
    ### the specified string found: use different $defPassword
} else {
    ### success
    $aux              ### show plink results
}

ご了承ください 2>&1で十分かもしれません:

  • *>&1送信すべての出力タイプ*)成功出力ストリームへ;
  • 2>&1エラーを送信します(2)および成功出力(1)成功出力ストリームに。
2
JosefZ