Powershell - 添加文件夹/文件到zip,同时排除某些文件夹

时间:2016-08-24 17:19:48

标签: powershell zip get-childitem

我试图通过io.compression.zip文件提供Get-ChildItem调用的结果来创建" E:\ Applications_Server_Test"的zip文件,不包括两个文件夹" BACKUP"和" BACKUP2"。

然而,Powershell似乎将此解释为" $ items =一串目录和文件名"而不是我想要压缩的目录和文件的递归集合。我可以找到关于使用Get-ChildItem来排除目录的教程,我可以找到关于如何压缩完整目录或压缩多个目录的教程,但是我无法在使用排除的压缩目录上找到任何内容。有人能告诉我哪里出错了吗?

$source = "E:\Applications_Server_Test"
$destination = "E:\AST_Dump.zip"

$items = Get-ChildItem $source -Recurse | ?{ $_.fullname -notmatch "\\backup\\?" }

Add-Type -assembly "system.io.compression.filesystem"
[io.compression.zipfile]::CreateFromDirectory($items, $destination)

谢谢!

1 个答案:

答案 0 :(得分:0)

目前您正在尝试存档对象$ items,而不是文件夹。不幸的是,这不会奏效。 尝试在同一个驱动器上移动备份文件夹(这只会更改驱动器上的记录而不移动任何数据),然后归档整个“E:\ Applications_Server_Test”文件夹并移回备份文件夹。

其他选项是使用ZipArchive.CreateEntry方法并将文件按文件添加到存档中。但这不是那么优雅;)