Я пытаюсь выполнить распаковку в параллельном режиме с помощью PowerShell. Приложенный код разархивирует один файл за раз, который соответствует ключевому слову. Есть ли способ распаковать несколько файлов параллельно
Вы можете использовать рабочий процесс, который обеспечит параллельную обработку Вы можете узнать больше о рабочих процессах на https://docs.microsoft.com/en-us/system-center/sma/overview-powershell-workflows?view=sc-sma-1801
workflow Unzip-File{ Param ( [Object]$Files, [string]$Destination, [switch]$SeprateFolders ) foreach –parallel ($File in $Files){ if($SeprateFolders){ Write-Output "$($file.Name) : Started" Expand-Archive -Path $File -DestinationPath "$Destination\$($file.Name)" Write-Output "$($file.Name) : Completed" }else{ Write-Output "$($file.Name) : Started" Expand-Archive -Path $File -DestinationPath $Destination Write-Output "$($file.Name) : Completed" } } } try{ $ZipFiles = Get-ChildItem C:\Users\Default\Desktop\ZipTest\Source\*.zip Unzip-File -Files $ZipFiles -Destination "C:\Users\Default\Desktop\ZipTest\Destination" -SeprateFolders }catch{ Write-Error $_ }
Я бы попробовал: https://github.com/nightroman/SplitPipeline
$Zipfiles = gci [...] $ZipFiles | Split-Pipeline -Count 10 {process{ Expand-Archive -Path $_ -DestinationPath [...] }}
Вы также можете начать работу для каждого элемента, а затем получить их в конце цикла. https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_jobs?view=powershell-6