Разархивируйте несколько файлов параллельно с помощью powershell - PullRequest
0 голосов
/ 29 июня 2018

Я пытаюсь выполнить распаковку в параллельном режиме с помощью PowerShell. Приложенный код разархивирует один файл за раз, который соответствует ключевому слову. Есть ли способ распаковать несколько файлов параллельно

Code

Ответы [ 2 ]

0 голосов
/ 29 июня 2018

Вы можете использовать рабочий процесс, который обеспечит параллельную обработку Вы можете узнать больше о рабочих процессах на 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 $_
}
0 голосов
/ 29 июня 2018

Я бы попробовал: 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

...