我有一个调用以下命令的 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
)发送到成功输出流。