В этой строке вы записываете вывод оператора замены в конвейер, который затем будет получен Set-Content
$line -replace $_.Key, $_.Value
тогда как в этой строке вы записываете выходные данные на хост (то есть консоль powershell), они не попадут в конвейер и не будут получены Set-Content:
write-Host $line
Чтобы это исправить, просто замените write-host на write-output:
Write-Output $line