Следует ли использовать подвыражение PowerShell при Invoke-Sqlcmd в модуле Runbook Azure?

Мы используем модуль Runbook PowerShell для службы автоматизации Azure для обслуживания Azure Sql, как описано в https://www.2azure.nl/2020/07/28/how-to-use-azure-automation-to-maintain.-sql-indexes-and-statistics/ (и в сбой модуля Runbook Powersell в службе автоматизации Azure: 'Invoke-Sqlcmd' не распознается как имя командлета, ответ)

$SQLOutput = $(Invoke-Sqlcmd -ServerInstance $AzureSQLServerName 
  -Username $Cred.UserName -Password $Cred.GetNetworkCredential().Password
  -Database $AzureSQLDatabaseName -Query $sql 
  -QueryTimeout 65535 -ConnectionTimeout 60 -Verbose) 4>&1
Write-Output $SQLOutput

Но мы обнаружили, что в случае ошибки (в частности, когда имя пользователя было неправильным) задание завершалось успешно, даже если ошибка была записана в выводе. Означает ли это, что подвыражение $ (команда) автоматически перехватывает исключения? Он не упоминается в https://ss64.com/ps/syntax-operators.html.

Другая проблема с сохранением подвыражения в $ SQLOutput заключается в том, что мы можем видеть вывод только после завершения $ (Invoke-Sqlcmd), а не во время процесса. Если $ (Invoke-Sqlcmd) занимал более 3 часов, задание останавливалось Azure, и мы не могли видеть, что было обработано, а что нет.

Должен ли я вообще не использовать подвыражение и напрямую вызывать Invoke-Sqlcmd?

Invoke-Sqlcmd -ServerInstance $AzureSQLServerName 
  -Username $Cred.UserName -Password $Cred.GetNetworkCredential().Password 
  -Database $AzureSQLDatabaseName -Query  $sql 
  -QueryTimeout 65535 -ConnectionTimeout 60 -Verbose) 4>&1

Будет ли у него какие-то недостатки по сравнению с подвыражением?


person Michael Freidgeim    schedule 08.05.2021    source источник
comment
Я бы использовал Splatting для это. Он создает хорошо читаемый / поддерживаемый код. (не могу проверить, что происходит, если указано неправильное имя пользователя ..)   -  person Theo    schedule 09.05.2021
comment
@theo, спасибо за ссылку на Splatting. Я не знал об этом.   -  person Michael Freidgeim    schedule 13.05.2021


Ответы (1)