Как архивировать через Powershell


04 июля 2019


Архивирование через Powershell в ZIP

Архивирования через Powershell  воз можно используя два командлета Compress-Archive и Extract-Archive. Эти команды доступны с версии 5.0. Что бы узнать версию нужно запустить:

host
#или
$PSVersionTable

Архивирование файла в powershell делается так:

Compress-Archive -DestinationPath C:\test3.zip -Path 'C:\Folder1\test.txt'

Где:

  • DestinationPath - путь куда архив будет сохранен
  • Path - папка или файл который мы планируем архивировать

Выбирать формат архивирования мы не можем, он всегда ZIP. Мы можем выбрать тип сжатия:

Compress-Archive -CompressionLevel Fastest -DestinationPath C:\test4 -Path "C:\Folder1\file" 

CompressionLevel - уровень компрессии данных. Мы можем сэкономить место путем сжатия или увеличить скорость не прибегая к сжатию вовсе. Тут есть 3 варианта:

  • Fastest 
  • NoCompression
  • Optimal (по умолчанию)

Мы можем выполнять архивацию в Powershell используя несколько папок или документов:

Compress-Archive -DestinationPath C:\test5 -Path C:\Folder1\, C:\Folder2\

Либо можем обновить существующий архив новыми файлами добавив ключ Update:

Compress-Archive -Path C:\Folder3\ -Update -DestinationPath C:\test5.zip

Архивацию в powershell можно использовать совместно с командой Get-ChildItem и фильтровать глубину и типы файлов для добавления в архив:

Get-ChildItem -Path C:\Folder1\,C:\Folder2\ -Include "*.txt" -Exclude "*.exe" -Recurse | Compress-Archive -DestinationPath C:\test6.zip

Где:

  • Include - включает любые файлы. В моем случаем возьмутся все файлы, которые заканчиваются на .txt
  • Exclude - исключает файлы. В моем случае мне не нужны файлы, которые заканчиваются на .exe
  • Recurse - рекурсивный поиск файлов. 

Более подробно Get-ChildItem рассматривался тут.

Для извлечение данных из архива работает этот командлет:

Expand-Archive -Path C:\zipfile.zip -DestinationPath C:\Unzipped2

Для извлечения множества файлов из архивов, которые лежат в текущей папке, можно сделать следующее:

Get-ChildItem -Path C:\*.zip | Expand-Archive -DestinationPath C:\Unzipped2 -Force

Ключ -Force перезапишет те файлы если названия будут совпадать

...

Теги: #powershell


Популярные тэги
О блоге
Этот блог представляет собой конспекты выученного материала, преобретенного опыта и лучшие практики в системном администрировании и программировании.