I need to compress and extract some zip files with a rather large source, often 30GB or more, so I can't use the native PowerShell cmdlets. I am looking at using [IO.Compression.ZipFile] static methods, and liking the fact that it works with big source folders, and works faster in general. But I am running into one issue. I want to include the source folder IN the archive, like Compress-Archive does
$sourcePath = '\\px\Rollouts\ADSK\2023\Revit_2023\Deployment\Revit_2023'
Compress-Archive -Path:$sourcePath -DestinationPath:$zipPath
the Revit_2023 folder is part of the archive, while with
[IO.Compression.ZipFile]::CreateFromDirectory($sourcePath, $zipPath)
only the CONTENTS of the Revit_2023 folder is archived. When extracting I could create a folder with the name of the Zip file as the folder name and extract to that, but I can imagine a scenario where I really want the Zip file named differently, perhaps with a date or something. But in looking at the docs here it looks like this behavior is the only option for a simple implementation, and doing what I want to do is going to require managing entries myself. And even that I am not sure about, since it looks like entries are files only? Am I misunderstanding here, and there is an option to include the source folder? I sure would prefer to have a simple solution AND the source folder name in the archive.
Overloads of the method are:
So the command would be:
You could pick different CompressionLevel, but you can't skip it when also using includeBaseDirectory flag.