在PowerShell中一次从CSV运行多个搜索以复制项目

时间:2018-06-11 01:50:15

标签: powershell

我目前正在尝试处理好一些文件,而且这个过程正在进行中。这些文件都是通过guid命名的,并且有相应的CSV文件,其中包含一个列,其中包含我试图查找的每个guid。因此,我在CSV文件中获取包含guid的列,然后让PowerShell在files文件夹中搜索匹配的guid。以下是我到目前为止,是否有可能以某种方式并行运行此搜索,因此它一次搜索多个文件而不是一次搜索多个文件?

$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 :(得分:2)

您可以通过索引哈希表中的所有$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
    }
}