Копирование нескольких файлов параллельно через Power-Shell без использования стороннего программного обеспечения? - PullRequest
0 голосов
/ 02 сентября 2018

Постановка задачи: Я пытаюсь скопировать 100 файлов (каждый из которых размером больше, чем ГБ) из источника в каталог назначения, я автоматизирую это с помощью сценария Power-Shell. При выполнении сценария операция копирования копирует файлы по порядку. Есть ли какой-нибудь способ, которым мы можем копировать их параллельно, чтобы сократить время, так как копирование всех файлов занимает много времени и имеет ограничение на использование любого стороннего программного обеспечения.

    $DATAFileDir="D:\TEST_FOLDER\DATAFILESFX\*"
    $LOGFileDir="D:\TEST_FOLDER\LOGFILESFX\*"
    $DestDataDir="D:\TEST_FOLDER\Data\"
    $DestLogDir="D:\TEST_FOLDER\Log\"

    #Copying the Primary file
    Copy-Item -Path $DATAFileDir -Destination $DestDataDir -Recurse -Force -Verbose
    #Copying the Audit File
    Copy-Item -Path $LOGFileDir -Destination $DestLogDir -Recurse -Force -Verbose

Есть предложения?

Ответы [ 2 ]

0 голосов
/ 02 сентября 2018

Этого достаточно легко достичь с помощью рабочего процесса powershell . Ограничение газа будет регулировать количество файлов, которые будут копироваться параллельно. Удалите его, чтобы скопировать все файлы параллельно (вероятно, не рекомендуется для 100 файлов).

workflow copyfiles {

    param($files)

    foreach -parallel -throttlelimit 3 ($file in $files) {

        Copy-Item -Path $file -Destination 'C:\destination\' -Force -verbose
    }
}

$files = Get-ChildItem -Path C:\source -Recurse -File

copyfiles $files.FullName
0 голосов
/ 02 сентября 2018

Вы можете запустить индивидуальный процесс для каждого файла, который хотите скопировать.

$Source = Get-ChildItem -Path C:\SourceFolder -Recurse | Select -ExpandProperty FullName
$Destination = 'C:\DestinationFolder'
foreach ($Item in @($Source)){
    #starting job for every item in source list
    Start-Job -ScriptBlock {
        param($Item,$Destination) #passing parameters for copy-item 
            #doing copy-item
            Copy-Item -Path $Item -Destination $Destination -Recurse  -Force
    } -ArgumentList $Item,$Destination #passing parameters for copy-item 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...