
Существует ли однострочная команда, которая сжимает/распаковывает файлы (*.zip) в PowerShell?
решение1
DotNetZipпозволит вам сделать это из PowerShell. Это не однострочный скрипт, но библиотека позволит вам написать нужный вам скрипт PowerShell.
Вы также можете использовать COM-интерфейс, см.Сжатие файлов с помощью Windows PowerShell и последующая упаковка гаджета боковой панели Windows Vista.
Поиск в Google по запросам «zip powershell» или «unzip powershell» также может дать полезные результаты.
решение2
Вот как это можно сделать чисто из Powershell без внешних инструментов. Это распаковывает файл с именем test.zip в текущий рабочий каталог:
$shell_app=new-object -com shell.application
$filename = "test.zip"
$zip_file = $shell_app.namespace((Get-Location).Path + "\$filename")
$destination = $shell_app.namespace((Get-Location).Path)
$destination.Copyhere($zip_file.items())
решение3
Теперь в .NET Framework 4.5 естьZipFileкласс, который можно использовать следующим образом:
[System.Reflection.Assembly]::LoadWithPartialName('System.IO.Compression.FileSystem')
[System.IO.Compression.ZipFile]::ExtractToDirectory($sourceFile, $targetFolder)
решение4
Вы можете захотеть проверитьРасширения сообщества PowerShell (PSCX)в котором есть командлеты специально для этого.