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

如何在从SQL存储过程调用的Powershell中传递参数,powershell,sql-server-2008-r2,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"'

我正在尝试从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"'
我认为这是一个语法问题。任何机构能否就此提出解决方案

在高级版中感谢您尝试以下功能:

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
试试这个:

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

您将变量传递给
xp\u cmdshell
的方式不允许为PowerShell呈现该变量。您基本上是从PowerShell提示符的视图执行此操作:

powershell.exe -c "get-service | D:\Listing1.ps1 -@dteBatchDate"
与在PowerShell中执行命令之前需要呈现变量的方式相同,您必须使用
xp\u cmdshell
执行相同的操作

因此,在将命令传递给
xp\u cmdshell
之前先构建命令。

将变量传递给
xp\u cmdshell的方式不允许为PowerShell呈现该变量。您基本上是从PowerShell提示符的视图执行此操作:

powershell.exe -c "get-service | D:\Listing1.ps1 -@dteBatchDate"
与在PowerShell中执行命令之前需要呈现变量的方式相同,您必须使用
xp\u cmdshell
执行相同的操作

因此,在将命令传递给
xp\u cmdshell
之前先构建命令。

谢谢,这对我很有用。在传递参数之前稍作修改,就不需要有“-”符号。我刚刚修复了您提供的语句。无法检查,因为我在这里使用手机;-)我试过了,但它不接受中间有空格的参数。你是怎么做到的?谢谢这对我有用。在传递参数之前稍作修改,就不需要有“-”符号。我刚刚修复了您提供的语句。无法检查,因为我在这里使用手机;-)我试过了,但它不接受中间有空格的参数。你是怎么做到的?这是一个很好的答案,因为它解释了导致问题的原因。这是一个很好的答案,因为它解释了导致问题的原因。