У меня есть скрипт powershell, который вызывает следующую команду:

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

Проблема в том, что $ defPassword не всегда одинаков / корректен. Как я могу поймать ошибку Access denied от 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

Подумайте, это как попробовать \ поймать, но с plink используется пароль

1 ответ1

0

Сообщение "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) в поток вывода об успешном завершении.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .