Моя команда и я работали над сценарием в PowerShell, который найдет старые версии Java JRE \ JDK и обновит их до последней версии. Нам удалось заставить скрипт завершить 98% всего, что мы хотим выполнить sh, но, похоже, возникли проблемы с одним разделом скрипта. Небольшая часть скрипта вызывает исключительный файл java keytool для поиска, старого хранилища ключей и обновления нового хранилища ключей. У нас есть команды для выполнения задачи и мы можем успешно импортировать новое хранилище ключей, когда мы знаем пароль хранилища ключей, но если мы не знаем пароль, мы хотим иметь возможность записать выходные данные с ошибочным паролем и сохранить его в нашем рабочем журнале. файл, но позволить сценарию продолжить.
$tempstore = "C:\Program Files\Java\Tempstore"
$newcertpath = "C:\Program Files\Java\jre1.8.0_231"
$oldcertpath = "C:\Program Files\Java\jre1.8.0_201"
$JavaKeyTool = "C:\Program Files\Java\jre1.8.0_231\bin\keytool.exe"
# copy cert from old path and store in temp location
Get-ChildItem -Path $oldcertpath -Filter "cacerts" -File |
Copy-Item -Destination $tempstore -Recurse -Force -ErrorAction Stop
Write-Output "Copied old x64 certs to temp file"
Write-Output $oldcertPath
#import keytool from new to old
& $JavaKeyTool -importkeystore -srckeystore "$oldcertpath\lib\security\cacerts" -srcstorepass badpassword -destkeystore "C:\Program Files\Java\Tempstore" -deststorepass badpassword -noprompt
# import from updated old to new cert path Keystore
& $JavaKeyTool -importkeystore -srckeystore "C:\Program Files\Java\Tempstore" -srcstorepass badpassword -destkeystore "$oldcertpath\lib\security\cacerts" -deststorepass badpassword -noprompt
Если пароль неверный, мы получим следующий вывод:
ошибка keytool: java .io.IOException: подделка хранилища ключей или неверный пароль
Это ожидается, но мы не можем понять, как получить этот вывод и сохранить его в лог-файле, который фиксирует весь ход выполнения скрипта. Мы пытались использовать Try / Catch, но, похоже, не можем получить правильный синтаксис.
Это на самом деле не проблема java keytool, это вопрос захвата вывода и попадания в файл журнала.
Кто-нибудь может дать понимание?