Estou tentando configurar um script do PowerShell em um trabalho do SQL Agent (SQL Server 2016). Estou usando um módulo de terceiros, DBATOOLS.psd1, que parece ser onde estou recebendo meu erro de sintaxe. Atualmente meu SQL Job tem uma linha de código que está falhando:
Import-Module e:\dbatools-master\dbatools-master\dbatools.psd1
Por que o trabalho está falhando com o seguinte erro? Este comando funciona muito bem quando eu o executo através do PowerShell ISE.
Error Message: Unable to start execution of step 1 (reason: line(5): Syntax error). The step failed.
Se estiver executando isso como uma etapa de trabalho do SQL Server Agent, você precisará usar o
Operating system (CmdExec)
tipo de etapa, não umPowerShell
tipo.Dentro do
CmdExec
seria melhor criar um arquivo na máquina com todas as etapas que você precisa e depois chamar isso.Por exemplo, crie um arquivo
C:\PowerShellScripts\MyScript.ps1
que contenha ...E, em seguida, chame esse script usando
powershell.exe "& 'C:\PowerShellScripts\MyScript.ps1'"
naCmdExec
etapa de trabalho.Para expandir o motivo pelo qual você geralmente não pode usar a etapa do PowerShell com outro módulo é o provedor do SQL Server. Ele não joga bem e há um item de conexão para obter MS para corrigir isso .
Se você adicionar
$erroractionpreference = 'stop'
à etapa do seu trabalho, verá a saída completa do motivo pelo qual o comando está errando:O provedor é o problema na maioria dos casos, pois não sabe interpretar alguns caracteres/comandos. Se o tipo de etapa do PowerShell o colocasse no contexto do host do PowerShell.exe, nossa vida seria muito mais fácil e coisas incríveis poderiam acontecer.
Interessante, não funciona para mim no meu laboratório, mas recebo um erro diferente. Estou usando o Powershell em nosso ambiente SQL2014, mas tive problemas, acho que relacionados ao provedor PS em 2014, e estou usando o comando cmdexec para iniciar scripts do powershell.
Minha etapa do SQL Agent se parece com isso em 2016 e funcionou: