Эта строка:
$sql = Get-Content C:\db2.sql
Возвращает массив строк. Когда это назначается чему-либо, ожидающему строку, PowerShell объединяет массив строк в одну строку, используя содержимое переменной $OFS
(разделитель выходных полей). Если эта переменная не установлена, разделителем по умолчанию является один пробел. Попробуйте вместо этого и посмотрите, работает ли он:
$sql = Get-Content C:\db2.sql
...
$OFS = "`r`n"
$cm.CommandText = "$sql"
Или, если вы используете PowerShell 2.0:
$sql = (Get-Content C:\db2.sql) -join "`r`n"