如何在 PowerShell v2.0 中压缩文件

How do I compress a file in PowerShell v2.0

我使用的是 PowerShell 2.0,无法更新到更高版本。我需要能够将文件夹压缩成 ZIP。我搜索了 Stack Overflow,但没有找到对我有帮助的东西。

这是我尝试过的一件事,它会引发错误。

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

我想让它压缩我在 "Source" 指定的文件夹并将其放入指定的 "Destination"

我收到这个错误: 添加类型:无法添加类型。找不到程序集 'System.IO.Compression.FileSystem'。

欢迎来到 SO!

首先,这可能是 How to create a zip archive with PowerShell? 的重复 - 但是,我相信我的答案稍微好一点,所以我会 post 它。

我怀疑程序集未加载是安装了 .NET 框架而不是 Powershell 版本的问题,FWIW。你可能想看看 here.

最简单的答案可能是 Jeff Hicks 的 post here。以防 link 变暗,我将其删减为最简单的部分:

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
}

请原谅我的大写错误 - 它让我的眼睛受伤 - 但我相信你会随心所欲地美化它。

如果这是一个好的答案,请标记它;否则,请告诉我哪里出了问题,我会尽力改进它。