在 powershell 脚本中传递 SqlCmd 的路径

2024-03-12

我正在尝试编写一个 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(使用前将#替换为@)

在 powershell 脚本中传递 SqlCmd 的路径 的相关文章

随机推荐