如何在Powershell中传递从SQL存储过程调用的参数

时间:2015-08-19 05:16:18

标签: powershell sql-server-2008-r2

我正在尝试从SQL Server执行power shell脚本。 使用传递参数的静态值,每件事都适用于我。 但是,当我尝试使用动态参数时,它不起作用。

以下是我正在尝试的陈述:

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

我认为这是一个语法问题。任何机构都可以提出解决方案。

先谢谢

2 个答案:

答案 0 :(得分:4)

将变量传递给xp_cmdshell的方式不允许为PowerShell呈现它以查看它。您基本上是从PowerShell提示符的视图中执行此操作:

powershell.exe -c "get-service | D:\Listing1.ps1 -@dteBatchDate"

以同样的方式,当您需要在PowerShell中执行命令之前呈现的变量时,您必须对xp_cmdshell执行相同的操作。

在将命令传递给xp_cmdshell之前构建命令。 enter image description here

答案 1 :(得分: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