Depois de brincar um pouco, descobri que regsvr32
permite que você passe em mais de um arquivo por vez. Mudando $filesToRegister
para usar caminhos relativos para baixar o tamanho total da lista de argumentos e agora eu faço
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
E isso é muito mais rápido.