Упаковываем и распаковываем архивы с помощью Power Shell

1650

PowerShell

Командлет сжатия и распаковки архивов впервые появились в PowerShell 5 и давали возможность легко сжимать и распаковывать архивы с помощью командной строки. Пользуясь командлетами вы сэкономите время и место на жестком диске при упаковке, например, лог-файлов или папок.

Вы спросите, а зачем мне это знать, когда проще щелкнуть правой кнопкой мыши по файлу или папке и выбрать пункт меню «Добавить в архив…». Многие сторонние утилиты, такие как 7-zip поддерживают функцию архивирования с помощью командной строки. Однако, командлеты очень полезны, если вы хотите автоматизировать задачу с помощью PowerShell.

Сама операция архивирования и распаковки в PowerShell выполняется с помощью двух командлетов:

  • Compress-Archive – используется для сжатия файлов и папок
  • Expand-Archive – используется для извлечения (распаковки) сжатых архивов

Сжимаемфайлыв zip архив

Параметр compressionlevel поддерживает несколько режимов компрессии:

  • Fastest — самый быстрый метод сжатия (сжатые файлы, папки имеют наибольший размер)
  • NoCompression — без сжатия (файлы, папки будут объединены в одни файл архива без сжатия)
  • Optimal – самый медленный метод сжатия (сжатые файлы, папки имеют наименьший размер)

В приведенном нами примере создадим архив «logs.zip» папки логов веб-сервера IIS.

compress-archive -path 'c:\wwwroot\logs' -destinationpath '.\logs.zip' -compressionlevel optimal

Скрипт PowerShell

Вместо параметра -Path, вы можете подставить командлет –LiteralPath, который отвечает за то, что подстановочные символы не будут интерпретированы в PowerShell. Параметр –Update командлета Compress-Archive заменяет старую версию файла на новый.

compress-archive -path “c:\wwwroot\logs\latest” -destinationpath “c:\wwwroot\logs\logs.zip” -update 
-compressionlevel optimal

Ввод параметров можно и пропустить. Тогда команда архивирования примет вид:

compress-archive test.txt test.zip

Распаковываем архив

Распакуем архив iislogs.zip в новую папку текущей директории

expand-archive -path 'c:\users\john\desktop\iislogs.zip' -destinationpath '.\unzipped'

PowerShell команды

Обратите внимание, что, если пропустить параметр –DestinationPath, PowerShell автоматически создаст новую папку с таким же именем, как и имя архива. В приведенном нами примере новая папка получит имя «iislogs».