在powershell脚本中将路径传递给SqlCmd

Dav*_*ans 11 powershell sqlcmd

我正在尝试编写一个powershell脚本,它将执行sqlcmd.exe来运行sql脚本.该脚本包含一个SQLCMD变量,我想通过sqlcmd的-v开关在命令行中传入该变量.问题是,PowerShell是做一些奇怪的,当我经过的路径作为我的变量,而这又导致SQL脚本失败的一个值.

比如说我打电话:

$path = 'C:\path'
sqlcmd -SMySQLServerInstance  -i 'MySqlScript.sql'  -v MyVariablePath=$path
Run Code Online (Sandbox Code Playgroud)

运行时我收到一个错误,上面写着:

Sqlcmd: ':\path': Invalid argument.
Run Code Online (Sandbox Code Playgroud)

没有我试过的双重或单引号$pathMyVariablePath=$path 解决问题.

有人可以提供一个简单的规范示例,说明如何做到这一点?

Dav*_*ans 19

终于解决了.对于下一个尝试这个的吸盘是解决方案

powershell脚本看起来像

$myPath = "`"C:\Path`"" 
sqlcmd.exe -SmySQLInstance -i./test.sql -v myvar=$myPath
Run Code Online (Sandbox Code Playgroud)

我的test.sql文件然后可以像这样使用变量

PRINT "$(myvar)"
Run Code Online (Sandbox Code Playgroud)

这里的关键是理解powershell如何逃避角色.关于这里的更多信息