我在Windows Server 2012R2上有大量的500GB索引文件,这些文件正由应用程序不断更新。
我必须使用PowerShell压缩文件,但是当我尝试使用以下代码片段对其进行压缩时,我会遇到以下异常:
使用“4”参数调用“CreateFromDirectory”的异常:“进程无法访问文件'E:\ Program Files(x86)\ Application Folder \ File \ Status.FCS',因为它正被使用 通过另一个过程。“
$zip = "E:\Folder\File.zip"
$can = "E:\Program Files (x86)\Application Folder\File
Import-Module AWSPowerShell
# functions
function ZipFiles( $zipfilename, $sourcedir )
{
Add-Type -Assembly System.IO.Compression.FileSystem
$compressionLevel = [System.IO.Compression.CompressionLevel]::Optimal
[System.IO.Compression.ZipFile]::CreateFromDirectory($sourcedir,
$zipfilename, $compressionLevel, $false)
}
ZipFiles $zip $can
如果我使用Windows GUI压缩文件,我没有任何问题,但只有在我使用PowerShell脚本时才会出现问题。此外,如果我停止应用程序服务,PowerShell脚本工作正常(我在prod环境中无法做到)。
其中一个解决方案是复制带有500Gb索引的文件夹并压缩它(这应该可以工作),但我的Windows服务器上没有足够的磁盘空间来执行此操作。
在使用PowerShell脚本写入锁定时,是否有任何压缩文件的解决方案?
答案 0 :(得分:0)
您需要为zip文件设置其他目录:[System.IO.Directory]::SetCurrentDirectory($inPath)
Function ZipFiles( $zipFileName, $pathTarget )
{
Add-Type -Assembly System.IO.Compression.FileSystem
# Emplacement de sortie
[System.IO.Directory]::SetCurrentDirectory($inPath)
$compressionLevel = [System.IO.Compression.CompressionLevel]::Optimal
[System.IO.Compression.ZipFile]::CreateFromDirectory($pathTarget, $zipFileName, $compressionLevel, $false)
}