用PowerShell和Windows工具创建一个ZIP文件
本文关键字:一个 ZIP 文件 PowerShell Windows 工具 创建 | 更新日期: 2023-09-27 18:14:58
我想用PowerShell备份客户电脑的数据。为此,我创建了所请求数据的ZIP存档,这基本上没有任何问题。但是当涉及到使用Unicode的特殊字符或用户构建非常长的路径名时,我就会遇到麻烦。我已经尝试了不同的东西,但还没有找到一个解决方案。我的客户端计算机运行Windows 10 (Build 1511)。由于其他依赖关系,安装周年更新(Build 1607)不是解决方案。也不能使用第三方软件来创建ZIP文件。
下面是我已经找到并尝试过的三种方法。它们都有相同的问题:当涉及到长路径名时,它们立即停止执行,或者只是跳过文件夹结构的其余部分。
1。使用PowerShell V5 CmdLet Expand-Archive
创建ZIP文件$Target = "C:'Temp'Test.zip"
$Source = "C:'Test"
Compress-Archive -Path $Source -DestinationPath $Target
2。用。net类
创建一个ZIP文件Add-Type -assembly "system.io.compression.filesystem"
$Target = "C:'Temp'Test.zip"
$Source = "C:'Test"
[io.compression.zipfile]::CreateFromDirectory($Source, $Target);
3。使用Windows资源管理器(压缩文件夹)
创建ZIP文件$Source = Get-ChildItem "C:'Test" -Recurse
$Target = "C:'Temp'Test.zip"
if (-not (Test-Path $Target)) {
Set-Content $Target ("PK" + [char]5 + [char]6 + ("$([char]0)" * 18))
(dir $Target).IsReadOnly = $false
}
$objShell = New-Object -Com Shell.Application
$objZIP = $objShell.NameSpace($Target)
foreach($File in $Source) {
$objZIP.CopyHere($File.FullName)
Start-sleep -milliseconds 500
}
然后我发现,应该可以通过UNC命名空间访问本地驱动器,该命名空间可能看起来像''?'C:'Test
。但这不适用于我的Windows 10 build 1511版本。对于build 1607,这是可能的。我不明白的是:为什么?我试着在build 1511上安装最新的。net 4.6.2版本,但问题仍然存在。
谁能帮助我访问(本地)UNC命名空间或创建ZIP档案?
访问UNC路径,使用$字符来设计驱动器
喜欢' ' computername ' '路径'路径' file.txt加元
我使用。net函数,因为与powershell v2兼容
[IO.Compression.ZipFile]::CreateFromDirectory($SourcesFolder, $zipTempPath, $CompressionLevel, $False)
我使用长UNC路径没有问题