Итак, я знаю, что это немного не связано, но мне нужно было записать операторы "RAISERROR" и "PRINT" в отдельную переменную, а затем в данные строки. Вот как я это сделал:
$Messages = %{ $Rows = Invoke-Sqlcmd -Query "PRINT 'Hello World!';" -ServerInstance $Server -verbose} 4>1
Это строка данных из Invoke-SqlCmd находится на STDOUT, который используется $ Rows, подробный вывод продолжается по каналу и перенаправляется в STDOUT (который, благодаря $ Rows, пуст). Единственная вещь в STDOUT, которую можно передать $ Messages, это подробный вывод. Уф!
Немного сложнее получить данные, которые теперь находятся в $ Messages.Message.