Термин «EXEC» не распознается как имя командлета Powershell. - PullRequest
0 голосов
/ 19 ноября 2018

У меня есть пакет служб SSIS dtsx, который я хочу запустить с помощью PowerShell. Вот что я запускаю в powershell.

EXEC xp_cmdshell '"C:\Program Files\Microsoft SQL Server\130\DTS\Binn\DTExec.exe" /f "F:\SqlExport\New package.dtsx"'

К сожалению, я получаю сообщение об ошибке ниже, и я не знаю, почему

EXEC : The term 'EXEC' is not recognized as the name of a cmdlet, function,
script file, or operable program. Check the spelling of the name, or if a path
was included, verify that the path is correct and try again.
At line:1 char:1
+ EXEC xp_cmdshell '"C:\Program Files\Microsoft SQL Server\130\DTS\Binn ...
+ ~~~~
    + CategoryInfo          : ObjectNotFound: (EXEC:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

Я включил xp_cmdshell в SQL Server, используя также команду ниже

1 Ответ

0 голосов
/ 19 ноября 2018

EXEC xp_cmdshell - это оператор T-SQL для запуска команд оболочки с помощью cmd.exe.

Я предполагаю, что намерение PowerShell выполнить команду, которая начинается с исполняемого пути "C:\Program Files\Microsoft SQL Server\130\DTS\Binn\DTExec.exe", , запущенного из вашего сценария T-SQL через EXEC xp_cmdshell [1] .

Вместо этого ваше сообщение об ошибке означает, что PowerShell выполнил всю строку , что, как и ожидалось, не удалось : PowerShell не имеет команды EXEC (и нет внешней программы с таким именем на ваша система).

При этом PowerShell здесь не нужен, и он не будет вводить картинку , если ваша строка EXEC xp_cmdshell была выполнена SQL Server (с помощью сценария T-SQL).

Фактически, ваша команда T-SQL должна работать как есть (вызов внешней программы с аргументами через cmd.exe), если SQL Server правильно выполняет ее.


[1] Обновление : если целью является просто запустить команду из PowerShell

& "C:\Program Files\Microsoft SQL Server\130\DTS\Binn\DTExec.exe" /f "F:\SqlExport\New package.dtsx"`

Обратите внимание, что &, оператор вызова, должен сообщить PowerShell, что следующая строка в двойных кавычках - это имя исполняемого файла, который нужно вызвать.

...