PowerShell 5.0 (включен в Windows Management Framework 5.0, който по подразбиране е включен в Windows 10) има отделен модул Microsoft.PowerShell.Archive, което ви позволява да създавате и извличате ZIP архиви от командния ред или от скриптове на PowerShell. Списъкът на наличните командлети в модула Microsoft.PowerShell.Archive (C: \ Windows \ System32 \ WindowsPowerShell \ v1.0 \ Модули \ Microsoft.PowerShell.Archive) може да бъде получен чрез Get-Command.
Get-Command -Module Microsoft.PowerShell.Archive | Format-Table -AutoSize;
- -- -- -
Функция Compress-Archive 1.0.0.0 Microsoft.PowerShell.Archive
Функция Разширяване-Архив 1.0.0.0 Microsoft.PowerShell.Archive
Както виждаме, са налични два командлета, чиито имена говорят сами за себе си:
- Компресиране на архив
- Разширяване на архива
Нека разгледаме примери за използването на тези командлети за създаване / разархивиране на ZIP архиви от определени файлове или директории.
Формат на командите Компресиране на архив следното:
Compress-Archive [-Path] String [] [-DestinationPath] String [-CompressionLevel String] [-Update]
В параметър път посочват се изходните файлове, които ще бъдат пакетирани, -DestinationPath -местоположение на създадения архивен файл, CompressionLevel - ниво на компресия (NoCompression, Optimal или Fastest). параметър -Актуализация ви позволява да добавяте / актуализирате файлове в съществуващ ZIP архив. С ключ -сила, ако архивът с посоченото име вече съществува, той ще бъде презаписан.
съвет. Нивото на компресия на NoCompression, като правило, трябва да се използва за комбиниране на вече компресирани файлове (jpg, msi, mp3 и т.н.) в един архивен файл, така че системата да не губи време при опитите си да ги компресира.Примерна команда за компресиране на един файл:
Compress-Archive -Path C: \ Logs \ Update.log -DestinationPath C: \ Archive \ logs.zip -CompressionLevel Optimal
Компресирайте цялото съдържание на директорията:
Compress-Archive -Path C: \ Logs \ -DestinationPath C: \ Archive \ logs-all.zip -CompressionLevel Optimal
Можете да компресирате файлове с конкретна маска. Например, трябва да пакетирате само файлове с разширението * .txt.
Compress-Archive -Path C: \ Logs \ *. Txt -DestinationPath C: \ Archive \ logs-txt.zip -CompressionLevel Fastest
Изключение извиква „Напиши“ с аргумент (и) „3“: „Потокът беше твърде дълъг“.
В C: \ Windows \ system32 \ WindowsPowerShell \ v1.0 \ Модули \ Microsoft.PowerShell.Archive \ Microsoft.PowerShell.Archive.psm1: 805
char: 29
+... $ destStream.Write ($ буфер, 0, $ бройOfBytesRead)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo: NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId: IOException
За да разархивирате ZIP архива, използвайте командлета Разширяване на архива.
Формат на командата:
Разширяване-Архив [-Path] Низ [-DestinationPath] String [-Force] [-Confirm]
Например, за да разархивирате създадения по-рано zip архив, като презапишете файловете в целевата директория:
Разширяване-Архив-Път C: \ Scripts \ test1.zip -DestinationPath c: \ scriptpts -Force
От недостатъците на модула за архивиране на тази версия, заслужава да се отбележи:
- Не може да се гледа архивното съдържание, без да го разопаковате
- Част от файловете не могат да бъдат извлечени от архив (само за пълно декомпресиране)
- Не можете да използвате други архивни формати освен zip
В предишните версии на Poweshell можете да използвате клас NET Framework 4.5 за компресиране / декомпресиране на ZIP файлове ZipFile. Форматът за използване на класа е следният.
Ние пакетираме файловете в архива:
Add-Type -Сглобяване „system.io.compression.filesystem“
$ src = „C: \ Логове“
$ dst = "C: \ Архив \ test.zip"
[io.compression.zipfile] :: CreateFromDirectory ($ src, $ dst)
Можете да разархивирате ZIP архива, както следва:
Add-Type -Сглобяване „system.io.compression.filesystem“
$ src = "C: \ Архив \ test.zip"
$ dst = "C: \ Логове \ Архив"
[io.compression.zipfile] :: ExtractToDirectory ($ src, $ dst)