Для меня это прекрасно работает, если я добавлю ссылку на System.IO.Compression.FileSystem.dll
:
Add-Type -Path 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.IO.Compression.FileSystem\v4.0_4.0.0.0__b77a5c561934e089\System.IO.Compression.FileSystem.dll'
# compress using just two parameters.
# This will omit the source folder and gives you no option to set the CompressionLevel
[System.IO.Compression.ZipFile]::CreateFromDirectory("D:\Testzip", "D:\result.zip")
Если вы хотите, чтобы исходная папка была также включена, используйте функцию с 4 параметрами:
[System.IO.Compression.ZipFile]::CreateFromDirectory("D:\Testzip", "D:\result.zip", "Fastest", $true)
См. CompressionLevel Enum
Для тестирования я использовал структуру папок, в которой только подпапка D:\Testzip\folder1\folder1-1
пуста:
D:\TESTZIP
| the only file in the root directory.txt
|
\---folder1
+---folder1-1
\---folder1-2
just a single file here.txt
Файл result.zip
впоследствии прекрасно включал пустую папку ..