在System.IO.Compression.ZipFile中释放“source”文件夹

时间:2015-12-15 07:51:34

标签: .net powershell zip

我有一个小型PowerShell脚本,它接受一个文件夹,将一些文件复制到一个临时文件夹,将它们拼接在一起,然后删除临时文件夹。

我必须通过临时文件夹执行此操作,因为我需要在压缩它们之前操作一些文件,并且我不想在“原始”源文件上执行此操作。

这是我的剧本:

function CreateZip
{
    param([string]$source, [string]$target)
    Add-Type -AssemblyName "System.IO.Compression.FileSystem"
    if (Test-Path $target) {
        Remove-Item $target
    }
    [System.IO.Compression.ZipFile]::CreateFromDirectory($source, $target)
}

虽然这很有效,但似乎CreateFromDirectory锁定了从未发布的源目录(直到powershell退出)。我想是因为我无法通过我的脚本删除目录。它说:

Directory C:\Users\\****\AppData\Local\Temp\c12ddd2f cannot be removed because it is not empty.

如果我使用相同的删除方法,在我的脚本退出后,它可以正常工作。显然是因为PowerShell发布了它的资源。

当脚本仍在运行时,我可以以某种方式强制它释放它的锁吗?

我使用此命令删除文件夹:

Remove-Item $tmpDir -Recurse

0 个答案:

没有答案