Поэкспериментировав немного, я обнаружил, что regsvr32
позволяет передавать более одного файла за раз. Переключение $filesToRegister
на использование относительных путей, чтобы уменьшить общую длину списка аргументов, и теперь я делаю
if([System.Environment]::Is64BitOperatingSystem) { $regsvr = [System.Environment]::ExpandEnvironmentVariables('%windir%\SysWOW64\regsvr32.exe') } else { $regsvr = [System.Environment]::ExpandEnvironmentVariables('%windir%\System32\regsvr32.exe') } Set-Location $currentBuildFolder $arguments = @('/s') + $filesToRegister Write-Verbose "$regsvr $arguments" Start-Process $regsvr -ArgumentList $arguments -Wait
И это завершается намного быстрее.