如何使用 powershell 脚本中的 plink 捕获“访问被拒绝”

如何使用 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 使用密码

答案1

"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)发送到成功输出流。

相关内容