Термин EXEC не распознается как имя командлета Powershell.

У меня есть пакет 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, используя команду ниже


person imba22    schedule 19.11.2018    source источник


Ответы (1)


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, что следующая за ним строка в двойных кавычках является именем вызываемого исполняемого файла.

person mklement0    schedule 19.11.2018