如何在从PowerShell脚本传入的SQL脚本中使用变量

时间:2015-02-16 05:12:15

标签: sql powershell sqlcmd

我是Powershell的新手并且遇到了一些语法问题。我有一个powershell脚本,它使用我想在脚本中访问的变量调用SQL脚本。

param (
[string] $inst = "all"
)

invoke-sqlcmd -inputfile "D:\PowershellScripts\testSQL\testScript.sql" -variable $powerShellVar=$inst -serverinstance '.\sql2008';

在我的SQL查询中,我希望能够像这样访问$ powerShellVar变量

print $powerShellVar

但是,当我这样做时,我收到此错误

Invoke-Sqlcmd : Invalid pseudocolumn "$powerShellVar"

我做错了什么?

1 个答案:

答案 0 :(得分:3)

参数语法无效。难怪,因为这个记录很少。 -variable参数假定一个包含名称/值对的数组,如此,

$sqlParameters = @("variable1 = 'value1'", "variable2 = 'value2'")

只需一个参数,

$sqlParameters = @("variable1 = 'value1'")

通过这种语法,假设printarg.sql包含select $(powerShellVar),这应该有效:

$sqlParameters = @("powerShellVar = 'foobar'")
invoke-sqlcmd -ServerInstance computer\instance -inputfile "c:\temp\printarg.sql" -variable $sqlParameters