Если строка для замены занимает несколько строк, то использование Get-Content не приведет к ее обрезанию, если вы не объедините выходные данные Get-Content в одну строку.В этом случае проще использовать [io.file] :: ReadAllText (), например:
Get-ChildItem | Where {!$_.PSIsContainer} |
Foreach { $txt = [IO.File]::ReadAllText($_.fullname);
$txt -replace $old,$new; $txt | Out-File $_}
Обратите внимание, что с $ old вам может потребоваться использовать директиву регулярных выражений, например '(? S)' вначало, указывающее, что .
также соответствует символам новой строки.