如何使用PowerShell的不同变量名复制变量中的对象

时间:2013-09-18 05:35:41

标签: object powershell duplicates

我想在不同的变量名中创建相同对象的副本。 我需要的对象是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的原始默认值(使其成为只读似乎不可行)。这件事有没有解决办法? 提前致谢。

1 个答案:

答案 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中看到它...