如何使用powershell快速创建特定文件和目录的存档并维护结构

如何使用powershell快速创建特定文件和目录的存档并维护结构,powershell,compression,7zip,powershell-5.0,Powershell,Compression,7zip,Powershell 5.0,我使用压缩存档创建一个包含3个文件和2个目录(及其所有子目录)的zip文件,如下所示 不幸的是,它非常缓慢。我想使用7-Zip(速度更快)创建一个Zip文件。我一直在尝试使用Powershell附加组件Compress-7Zip来进行压缩。同样不幸的是,我不知道如何使用Compress-7Zip只获取指定的文件。我想,如果我能用所有可以导入Compress-7Zip的文件填充一个变量 $stuff = ??? .\foo.ini, .\ba

我使用压缩存档创建一个包含3个文件和2个目录(及其所有子目录)的zip文件,如下所示

不幸的是,它非常缓慢。我想使用7-Zip(速度更快)创建一个Zip文件。我一直在尝试使用Powershell附加组件
Compress-7Zip
来进行压缩。同样不幸的是,我不知道如何使用
Compress-7Zip
只获取指定的文件。我想,如果我能用所有可以导入
Compress-7Zip
的文件填充一个变量

$stuff = ???        .\foo.ini, 
                    .\bar.exe, 
                    .\README.TXT,
                    .\dir1, 
                    .\dir2

#$stuff now contains 3 txt files in the root and the complete contents
#dir\ and \dir2 with their paths

$stuff | Compress-7Zip -Format Zip -ArchiveFileName .\my.zip
如何使用Get-Child-Item(或其他东西)将目录结构转换为$stuff

或者,如果您对使用比压缩存档更好的压缩方法创建此zip有其他建议,我洗耳恭听。

有几件事

看起来(在使用Compress-7Zip的最后一段代码中)您正在尝试(splat)[:

这可能对您没有帮助,我很抱歉,我找不到
压缩存档
的文档进行确认。它看起来像是一个字符串数组。因此,如果您将所有这些文件填充到一个字符串数组中

$files_to_compress = @(
  '.\foo.ini'
  '.\bar.exe' 
  '.\README.TXT'
  '.\dir1'
  '.\dir2'
)
您可能可以执行以下操作

Compress-Archive -CompressionLevel Fastest `
-Force -DestinationPath ./My.zip `
-Path $files_to_compress 
希望这个例子有意义

Compress-Archive -CompressionLevel Fastest `
-Force -DestinationPath ./My.zip `
-Path $files_to_compress