我遇到了 write-zip 的问题:第二次使用 -Append 参数调用 Write-Zip 时出现错误:Extra data extended Zip64 information length is invalid。
我正在使用 PSCX 2.1.x。
我通过创建一个函数解决了这个问题,该函数不是附加一个新文件,而是将现有的 zip(如果有)扩展到临时文件夹,将新文件添加到文件夹中,然后一次性压缩所有文件。这行得通......但它不是很有效。
有什么解决办法吗?
这是我的工作功能:
Function Add-To-Zip {
Param (
[Parameter(Mandatory=$True)]
[String] $Path,
[Parameter(Mandatory=$True)]
[String] $OutputPath,
[Parameter(Mandatory=$True)]
[String] $TempPath,
[Parameter(Mandatory=$False)]
[Boolean] $RemoveOriginal = $False
)
If (Test-Path $TempPath) {
Remove-Item -Path $TempPath -Recurse
}
New-Item -ItemType Directory -Path $TempPath
$paths = @()
Copy-Item $Path $TempPath
If (Test-Path $OutputPath) {
Expand-Archive -Path $OutputPath -OutputPath $TempPath
}
Get-ChildItem $TempPath | ForEach { $paths += Get-Item $_.FullName }
Try {
$paths | Write-Zip -OutputPath $OutputPath -Quiet -FlattenPaths -EntryPathRoot $TempPath
If ($RemoveOriginal) {
Remove-Item -Path $Path
}
} Catch {
Throw "An error occured while adding '$FilePath' to '$ZipPath'."
}
If (Test-Path $TempPath) {
Remove-Item -Path $TempPath -Recurse
}
}