Как сжать файл в PowerShell v2.0 - PullRequest
0 голосов
/ 10 июня 2019

Я использую PowerShell 2.0 и не могу выполнить обновление до более поздней версии. Мне нужно иметь возможность сжать папку в ZIP. Я исследовал переполнение стека и не нашел ничего, что могло бы мне помочь.

Это одна вещь, которую я пробовал, и она выдает ошибку.

Add-Type -Assembly "System.IO.Compression.FileSystem"
[io.compression.zipfile]::CreateFromDirectory("Source", "Destination")

Я хотел сжать папку, указанную в «Source», и поместить ее в указанное «Destination»

Я получил эту ошибку: Add-Type: Невозможно добавить тип. Сборка 'System.IO.Compression.FileSystem' не найдена.

1 Ответ

0 голосов
/ 13 июня 2019

Добро пожаловать в SO!

Во-первых, это возможный дубликат Как создать zip-архив с PowerShell? - однако, я считаю, что у меня есть ответ, который немного лучше, так чтоЯ выложу его.

Я подозреваю, что сборка не загружается - это вопрос установленной платформы .NET, а не версии Powershell, FWIW.Возможно, вы хотели бы видеть здесь .

Ответ с наименьшим количеством ошибок - это, вероятно, сообщение Джеффа Хикса здесь .Если ссылка становится темной, я сокращаю ее до голых костей:

Set-Content $OutputPath ("PK" + [char]5 + [char]6 + ("$([char]0)" * 18))
$ZipFile = Get-Item $OutputPath
$ZipFile.IsReadOnly = $false  

$shell = New-Object -com shell.application
$zipPackage = $shell.NameSpace($zipfile.fullname)
$zipPackage.CopyHere($Path) 

Для полноты вот эквивалентная расстегивающая молния:

$shell = new-object -com shell.application
$zip   = $shell.NameSpace($Path)
foreach($item in $zip.items())
{
    $shell.Namespace($Destination).CopyHere($item) | out-null
}

Извините за заглавную заглавную букву - она ​​делаету меня болят глаза - но я уверен, что вы все сделаете, как вам захочется.

Если это хороший ответ, отметьте его как таковой;в противном случае, скажите мне, что сломалось, и я постараюсь улучшить это.

...