Термин "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: термин "EXEC" не распознается как имя командлета, функции, файл сценария или работоспособная программа. Проверьте правильность написания имени или, если путь был включен, проверьте, что путь правильный и попробуйте снова. В строке:1 символ: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 ответ
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, что следующая строка в двойных кавычках - это имя исполняемого файла, который нужно вызвать.