Неверный параметр psexec

Я использую psexec для выполнения.bat в системе. Это позволит отследить систему и вернуть мне информацию. Команда, которую я использую:

psexec \\server -u username -p password -s -i -c .\fingerprint.bat 

Это работает с большинством серверов, но некоторые из них не будут работать с ключом -i. Есть ли способ сказать, что если это не удастся, попробуйте сделать это снова без -i? Я использую PowerShell для выполнения сценария.

$servers = get-content .\input.txt

foreach($server in $servers) {
   psexec \\$server -u username -p password -s -i -c .\fingerprint.bat 
}

1 ответ

Решение

Проверьте автоматическую переменную $LastExitCode. Это устанавливается, когда PowerShell вызывает EXE. Независимо от кода выхода, который возвращает EXE-файл, он помещается в $LastExitCode. Я уверен, что psexec возвращает 0 для успеха, а все остальное означает неудачу, например:

foreach($server in $servers) {
   psexec \\$server -u username -p password -s -i -c .\fingerprint.bat 
   if ($LastExitCode) {
       psexec \\$server -u username -p password -s -c .\fingerprint.bat 
   }
}

Это использует трюк PowerShell, где if ($LastExitCode) будет иметь значение true, если $LastExitCode не равно 0.

Другие вопросы по тегам