替换 *.zip 文件中的文件而无需在 Powershell 中解压缩(提取)

Replacing files in a *.zip file without unzipping (extracting) in Powershell

大家好!

目前,我正在尝试在 Powershell 中创建一个脚本,它将 replace/delete 文件放入 *.zip 文件 而无需解压缩

我知道可以使用 7Zip 和 WinRAR 等应用程序手动执行,或者只需在文件夹资源管理器中打开 zip 存档,但我正在寻找一种自动执行此操作的方法。

我是 powershell 和一般编程的新手,所以我无法想出任何初步代码。我试图在网上搜索答案,但没有找到适合我的答案。

所以问题是:
假设我们有一个名为 Photos (Photos.zip) 的 zip 存档。存档包含 5 张图片。如何在 Photos.zip 中 replace/delete 图像而不在 Powershell 中提取它?

任何 code/ideas/links 有用的资源都将不胜感激。

我使用了以下解决方案。

首先,我使用以下代码将旧文件从存档移动到临时文件夹:

#Path to the temporary folder
$pathToTemporaryFolder = "C:\...\Temporary"
#Path to a file that will be moved from the archive to the temporary folder
$pathToFileToBeMoved = "C:\...\Photos.zip\My Photos\My Image.png"
(New-Object -COM Shell.Application).NameSpace("$pathToTemporaryFolder").MoveHere("$pathToFileToBeMoved")

然后,我将一些新文件复制到存档中:

#Path to the folder with a new file
$pathToFolderWithNewFile = "C:\...\New Images\My New Image.jpeg"
#Path to a folder in the archive where the new file will be copied to
$pathToFolderInArchive = "C:\...\Photos.zip\My Photos"
(New-Object -COM Shell.Application).NameSpace("$pathToFolderInArchive").CopyHere("$pathToFolderWithNewFile")

最后我删除了临时文件夹

Remove-Item -Path "C:\...\Temporary" -Recurse

这就是我在没有 unzipping/extracting 的情况下从存档中删除文件并将新文件复制到其中的方式。