如何在 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
}
请原谅我的大写错误 - 它让我的眼睛受伤 - 但我相信你会随心所欲地美化它。
如果这是一个好的答案,请标记它;否则,请告诉我哪里出了问题,我会尽力改进它。
我使用的是 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
}
请原谅我的大写错误 - 它让我的眼睛受伤 - 但我相信你会随心所欲地美化它。
如果这是一个好的答案,请标记它;否则,请告诉我哪里出了问题,我会尽力改进它。