Стоит проверить что именно у вас долгое
Import-csv
вы никак не ускорите.
А вот
$dataColl
- реальный кандидат на ускорение
Проще всего использовать ArrayList вместо массива
...
$dataColl = New-Object System.Collections.ArrayList
foreach ($Path in $Paths){
....
[void]$dataColl.Add($dataObject)
}
}
...
И вообще, массивы для коллекционирования более 1000 элементов - тормоза, потому что они каждый раз пересоздаются и копируются из старого в новый.
Measure-Command { $a = @(); 1..1000 | %{ $a += $_ } }
TotalMilliseconds : 40,3721
Measure-Command { $a = New-Object System.Collections.ArrayList; 1..1000 | %{ [void]$a.Add($_) } }
TotalMilliseconds : 18,5863
# А для 10000 уже
TotalMilliseconds : 2016,3737
vs
TotalMilliseconds : 57,6177
p.s. Кстати да,
Роман Безруков верно заметил, что новый массив создавать вообще не обязательно. Но информация выше сильно влияет на работу, так что оставлю :)