Я пытаюсь сжать 1 файл в новый архив. Приведенный ниже код работает .... большую часть времени. Однако время от времени (проблемы с сетью?) Я менял код (см. Ниже), чтобы создать уникальное имя, но я все еще иногда получаю эту ошибку.
Есть ли способ обойти эту проблему? Я на PowerShell 3, так что сжатый архив не вариант, хотя я, вероятно, могу установить pscx.
Exception calling "Open" with "2" argument(s): "The process cannot access the file '\\path\share$\folder\filename_20200221_14__20200224_102143.zip' because it is being used by another process."
At line:3 char:5
+ [System.IO.Compression.ZipArchive]$ZipFile = [System.IO.Compression.ZipFile] ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : IOException
Вот код, который я использую.
Я выполнил «foreach ($ file in $ files_to_process)», но смог продублировать ошибку, используя foreach {} для установки переменных, а затем запустил приведенный ниже код. Последующие прогоны работают, естественно.
$timestamp = (get-date).ToString("yyyyMMdd_HHmmss")
# Now create the zip file and remove the old one
[string]$zipFN = "$OnPremDirectoryDone$($file.basename)__$($timestamp).zip"
[string]$fileToZip = "$OnPremDirectory$($file.name)"
[System.IO.Compression.ZipArchive]$ZipFile = [System.IO.Compression.ZipFile]::Open($zipFN, ([System.IO.Compression.ZipArchiveMode]::Update))
[System.IO.Compression.ZipFileExtensions]::CreateEntryFromFile($ZipFile, $fileToZip, (Split-Path $fileToZip -Leaf))
$ZipFile.Dispose()
remove-item "$fileToZip"