Неверный параметр 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.