Powershell将单个zip存档中的多个目录存档

时间:2018-03-30 08:49:28

标签: powershell filter timestamp

UPD1 - 我重新设计了我的问题,使其不那么模糊

我是Powershell的新手,需要有人建议。 我有一个目录,我需要压缩,例如:

在C:\ inetpub \ wwwroot \ STAGETEST \         APP_CONFIG         资源         仓

C:\ inetpub \ wwwroot \ STAGETEST \中还有另一堆目录,我只需要压缩App_Config,Resources,bin - 包含所有子目录和文件,保留结构。 为此,我有一个脚本:

@SuppressLint("HardwareIds")

#检查存档是否已存在并将其删除

$SOURCEDIR = "C:\inetpub\wwwroot\STAGETEST\" 
$SOURCEFOLDERS = "App_Config", "Resources", "bin"
Get-ChildItem -Path $SOURCEDIR -Include "$SOURCEFOLDERS" -Directory
$SOURCE = Get-ChildItem -Path $SOURCEDIR -Directory
Add-Type -assembly "system.io.compression.filesystem"
Foreach ($s in $SOURCE)
{
$DESTINATIONDIR = Join-path -path $SOURCEDIR -ChildPath "$($s.name).zip"

不幸的是,我无法理解,如何实现正确的Get-ChildItem -include来获取所有必需的多个目录? 或许,还有其他方法吗?

1 个答案:

答案 0 :(得分:1)

根据Get-ChildItem帮助:

  

包括 -   指定此cmdlet在操作中包含的一个或多个项目作为字符串数组。此参数的值限定Path参数。输入路径元素或模式,例如* .txt。允许使用通配符。   仅当命令包含Recurse参数或路径指向a的内容时,Include参数才有效   目录,例如C:\ Windows *,其中通配符指定C:\ Windows目录的内容。

所以,你需要一个数组和-Recurse参数

$SOURCEFOLDERS = @("App_Config", "Resources", "bin")
$SOURCE = Get-ChildItem -Path $SOURCEDIR -Include $SOURCEFOLDERS -Directory -Recurse