Як зловити "Доступ заборонено", використовуючи пробку з сценарію powershell


0

У мене є сценарій powershell, який викликає таку команду:

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

Проблема, що $ defPassword не завжди однакова / правильна. Як я можу перехопити помилку "Відмовлено у доступі"?

Щось на зразок цього:

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

Думайте, що це схоже на спробуй ловити, але з користуватися паролем

Відповіді:


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 ) до потоку результатів успіху.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.