如何通过powershell将多个变量传递到SQL脚本中?

如何通过powershell将多个变量传递到SQL脚本中?,sql,powershell,powershell-4.0,Sql,Powershell,Powershell 4.0,我有以下几行代码来设置我的sqlcmd $mySqlCmd = "sqlcmd -S $server -U $username -P $pwd -d $dbname -o $lis -i $sqlScript -v fileDate = $fileDate, filePath = $filePath, sqlLoadErrors = $sqlLoadErrorPath" Invoke-Expression $mySqlCmd 这似乎不适用于多个变量。如果我删除试图传递到SQL脚本

我有以下几行代码来设置我的sqlcmd

    $mySqlCmd = "sqlcmd -S $server -U $username -P $pwd   -d $dbname -o $lis -i $sqlScript -v fileDate = $fileDate, filePath = $filePath, sqlLoadErrors = $sqlLoadErrorPath"
Invoke-Expression $mySqlCmd 
这似乎不适用于多个变量。如果我删除试图传递到SQL脚本中的最后两个变量,SQL脚本将运行并工作

在我的SQL脚本中,我有以下内容:

DECLARE 
    @currentDate NVARCHAR(25), 
    @filePath NVARCHAR(25),
    @sqlLoadErrors NVARCHAR(25)

SET @currentDate = $(fileDate) 
SET @filePath = $(filePath)
SET @sqlLoadErrors = $(sqlLoadErrors)
powershell脚本将变量传递给SQL脚本时是否出错

试试这个:

$cmdparameters = @(
    'fileDate = "17/06/2017"',
    'filePath = "c:\temp\test.txt"',
    'sqlLoadErrors = "yourcontent"'
)

$mySqlCmd = "sqlcmd -S $server -U $username -P $pwd   -d $dbname -o $lis -i $sqlScript -v $cmdparameters"
Invoke-Expression $mySqlCmd

我敢打赌逗号会把解析器弄糊涂。我会尝试使用PowerShell的停止解析符号,
-%
。类似这样:
$mySqlCmd=“sqlcmd-->S$server-U$username-P$pwd-d$dbname-o$lis-i$sqlScript-v fileDate=$fileDate,filePath=$filePath,sqlLoadErrors=$sqlLoadErrorPath”
。另外,
$pwd
是当前工作目录的保留变量名。它来自“打印工作目录”的
pwd
posixshell命令。我会避免使用它,它似乎不起作用。谢谢你的pwd提示,虽然我现在改变了。可能是