我想在不同的变量名中创建相同对象的副本。 我需要的对象是dotnetzip的归档文件。
以下代码是完整的实现:
[System.Reflection.Assembly]::LoadFrom($zipFileDirectory + "Ionic.Zip.dll")
$zipfile = [Ionic.Zip.ZipFile]::Read($zipfilename)
foreach ($file in $zipfile)
{
$strSearchItem = [string]$file.FileName
$strSearchItem = $strSearchItem.TrimEnd("/")
$newfile = $file.PSObject.Copy()
for ($i = 0; $i -lt $newfile.Count; $i++)
{
if ($strSearchItem -like $searchFolderName + "/*")
{
$newFile[$i].FileName = $newFile[$i].FileName.Replace($searchFolderName + "/", "")
$newFile[$i].Extract($fileDestination, [Ionic.Zip.ExtractExistingFileAction]::OverWriteSilently)
}
}
}
$zipfile.Dispose()
为此,我需要能够将$ file作为单独的实体从$ zipfile复制,或至少保留$ file的原始默认值(使其成为只读似乎不可行)。这件事有没有解决办法? 提前致谢。
答案 0 :(得分:2)
也许
$newFile = $zipfile.PSObject.Copy()
回复@bdrc评论
例如在zip中添加注释
PS>$zf=[ionic.zip.zipfile]::read("c:\temp\zip\test.zip")
PS>$zf.comment
PS>$zf2=$zf.psobject.copy()
PS>$zf2.comment="TEST COMMENT"
PS>$zf2.save("c:\temp\test2.zip")
用7-zip打开原始文件时我没看到评论,我可以在新的zipfile中看到它...