脚本中给出的Compress-Archive包含脚本本身

时间:2017-01-16 22:11:31

标签: powershell powershell-v2.0

如何让Compress-Archive仅压缩子文件夹结构?因为它现在是脚本本身包含在.zip中。或者可以过滤出来吗?

我得到的代码如下:

if (!($PSScriptRoot)) { Split-Path $MyInvocation.MyCommand.Path -Parent }
$destination  = Split-Path $MyInvocation.MyCommand.Path -Parent
$source = (Get-ChildItem $PSScriptRoot)
$date = Get-Date -UFormat "%Y-%m-%d"
$zipfile = $destination + "\createdOn" + $date + ".zip"

#Check if file exists
if ([System.IO.File]::Exists($zipfile))
{
    Clear-Host
    Write-Host "File created: " $zipfile
    Compress-Archive -DestinationPath $zipfile -Force -Path $source -CompressionLevel Optimal
}
else
{
    Clear-Host
    Write-Host "File created: " $zipfile
    Compress-Archive -DestinationPath $zipfile -Force -Path $source -CompressionLevel Optimal
}

2 个答案:

答案 0 :(得分:1)

尝试:

$source = (Get-ChildItem $PSScriptRoot -exclude $MyInvocation.MyCommand)

答案 1 :(得分:1)

如果将$source设置为$PSScriptRoot(脚本的父文件夹)的子项,然后从这些项创建存档,为什么生成的存档 包含脚本,该脚本是该文件夹的子项之一?

$source中删除脚本文件,以避免将其包含在存档中:

$source = Get-ChildItem $PSScriptRoot |
          Where-Object { $_.FullName -ne $PSCommandPath }