我正在尝试编写一个 powershell 脚本,它将执行 sqlcmd.exe 来运行 sql 脚本。该脚本包含一个 SQLCMD 变量,我想通过 sqlcmd 的 -v 开关在命令行中传递该变量。问题是,当我将路径作为变量之一的值传递时,powershell 会做一些奇怪的事情,从而导致 SQL 脚本失败。
例如我打电话:
$path = 'C:\path'
sqlcmd -SMySQLServerInstance -i 'MySqlScript.sql' -v MyVariablePath=$path
运行时我收到一条错误消息:
Sqlcmd: ':\path': Invalid argument.
我没有尝试过任何双引号或单引号$path
or MyVariablePath=$path
解决了这个问题。
有人可以提供一个简单的规范示例来说明如何完成此操作吗?
终于解决了。对于下一个尝试这个的傻瓜来说,这里是解决方案
powershell脚本看起来像
$myPath = "`"C:\Path`""
sqlcmd.exe -SmySQLInstance -i./test.sql -v myvar=$myPath
然后我的 test.sql 文件可以使用这样的变量
PRINT "$(myvar)"
这里的关键是理解 powershell 如何转义字符。更多相关信息here http://www.techotopia.com/index.php/Windows_PowerShell_1.0_String_Quoting_and_Escape_Sequences
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)