我有一个小型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