возникли проблемы при захвате вывода java keytool в powershell - PullRequest
0 голосов
/ 15 февраля 2020

Моя команда и я работали над сценарием в 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, это вопрос захвата вывода и попадания в файл журнала.

Кто-нибудь может дать понимание?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...