5

我遇到了 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
}
}
4

0 回答 0