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

How do I use a variable in an SQL script passed in from a powershell script

我是 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"

我做错了什么?

参数语法无效。难怪,因为这没有很好的记录。 -variable 参数假定一个包含 name/value 对的数组,如下所示,

$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