Проверить целостность архива с помощью 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

Содержит код выхода последней запущенной собственной программы.

about_Automatic_Variables

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