Проверить целостность архива с помощью 7-Zip в PowerShell
Я пытаюсь проверить целостность ZIP-файла
Похоже, эта команда работает, но я получил много подробностей о файле. Я хочу получить результат, если тест прошел или не прошел, чтобы перейти к следующему шагу.
Любая идея, как это сделать? Что-то типа:
$TestZip = 7z t \\bandit\global\QA\AgileTeam\bandit\Builds\8.6.22.607\8.6.22.607.10.zip
if ($TestZip)
{The test passed}
else
{Test failed}
Результат:
Path = \\bandit\global\QA\AgileTeam\bandit\Builds\8.6.22.607\8.6.22.607.10.zip
Type = zip
Physical Size = 5738248794
64-bit = +
Characteristics = Zip64
Everything is Ok
Files: 902
Size: 5927324719
Compressed: 5738248794
Пробовал это:
$TestZip = 7z t \\bandit\global\QA\AgileTeam\bandit\Builds\8.6.22.607\8.6.22.607.10.zip | set out
$ok = $out -like '*Everything is Ok*'
if ($ok) {write-host "Integrity test for Zip file passed"}
1 ответ
Об ошибках сообщается через код выхода , поэтому просто проверьте его. Не нужно анализировать вывод, вы можете просто перенаправить вывод на null . Способ проверки статуса выхода в PowerShell и
$LASTEXITCODE
7z t $zip_file_path 2>$null 1>$null
if ($?) {
echo "Success"
} else {
echo "Failed"
}
Обновлять:
Использовать
if ($LASTEXITCODE -eq 0)
вместо
if ($?)
когда stderr перенаправляется в более старой версии PowerShell (7.1.x и старше) для более надежного результата
$?
Содержит статус выполнения последней команды. Он содержит True, если последняя команда выполнена успешно, и False, если она не удалась.
$LastExitCode
Содержит код выхода последней запущенной собственной программы.