Запускать несколько поисков из CSV одновременно в PowerShell для копирования элементов - PullRequest
0 голосов
/ 11 июня 2018

В настоящее время я пытаюсь обработать большое количество файлов, и этот процесс занимает вечность.Все файлы названы через guid, и есть соответствующие CSV-файлы, в которых есть столбец, содержащий каждый guid, который я пытаюсь найти.Итак, я получаю столбец, который содержит направляющие в CSV-файле, а затем разрешаю PowerShell выполнять поиск совпадающих руководств в папке с файлами.Вот что у меня пока есть, можно ли как-нибудь запустить этот поиск параллельно, чтобы он искал несколько файлов за раз вместо одного за раз?

$CSV = Import-Csv 'D:\CSVs\csv\test.csv'
$files = Get-ChildItem 'X:\'
$destinationPath = "D:\files\"

ForEach ($guid in $CSV) {
    $files | Where-Object { $_.Name -match $guid.FileGUID } | Copy-Item -Destination $destinationPath
}

1 Ответ

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

Вы можете ускорить поиск, проиндексировав все $files в хеш-таблице:

$CSV = Import-Csv 'D:\CSVs\csv\test.csv'
$files = @{}
Get-ChildItem X:\ |ForEach-Object {
    $files[$_.Name] = $_
}
$destinationPath = "D:\files\"

ForEach ($guid in $CSV) {
    if($files.Contains($guid)){
        $files[$guid] |Copy-Item -Destination $destinationPath
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...