2015-08-19 3 views
2

Я пытаюсь выполнить сценарий оболочки оболочки с SQL Server. Каждая вещь работает со статическим значением переданных аргументов. Но когда я пытался с динамическим аргументом, он не работал.Как передать аргументы в Powershell, вызванные из SQL Сохраненная процедура

следующее утверждение, которое я пытаюсь:

declare @dteBatchDate as varchar(20) 
set @dteBatchDate='2014-06-23 15:49:00' 
EXEC xp_cmdshell 'powershell.exe -c "get-service | D:\Listing1.ps1 [email protected]"' 

Я думаю, что это вопрос синтаксиса. Может ли любое тело предложить решение по этому поводу.

Благодаря передовой

ответ

3

Попробуйте это:

declare @dteBatchDate as varchar(20) 
declare @sql as varchar(255) 
set @dteBatchDate='2014-06-23 15:49:00' 
set @sql = 'powershell.exe -c "get-service | D:\Listing1.ps1 -' + @dteBatchDate + '"' 
EXEC xp_cmdshell @sql 
+0

Спасибо, что это работает для меня. с небольшим изменением перед передачей аргументов нет необходимости иметь знак «-». –

+0

Я только что исправил заявление, которое вы предоставили. Нет способа проверить, как я нахожусь на своем мобильном телефоне ;-) – Scoregraphic

+0

Я пробовал это, но он не принимает параметры с пробелами между ними. Как ты это сделал? – Gsquare

4

, как вы передаете переменную xp_cmdshell не позволяет ему быть оказаны для PowerShell, чтобы увидеть его. Вы, в основном делаете это с точки зрения подсказки PowerShell:

powershell.exe -c "get-service | D:\Listing1.ps1 [email protected]" 

Таким же образом, когда вам нужен переменный оказываются перед выполнением команды в PowerShell, вы должны сделать то же самое с xp_cmdshell.

Итак, создайте свою команду, прежде чем передавать ее до xp_cmdshell. enter image description here

+0

Это хороший ответ, так как он объясняет, в чем проблема: * вызывает * проблему. – vonPryz

Смежные вопросы