我正在使用 powershell 脚本来运行使用 SnowSQL 的 sql 文件。我的想法是使用 powershell 脚本作为通用包装器来运行具有不同输入参数的各种 sql 文件,这些文件是从企业调度程序中调度的作业中执行的。
以下是 powershell 脚本文件的片段:
$Command = '&"C:\Program Files\Snowflake SnowSQL\snowsql.exe"' + ' --config "' + $ConfigFilePath + '" --filename "' + $sFilePath + '\' + $sFileName + '.sql"' + $sParams
Invoke-Expression -Command $Command
通过 Snowsql 执行的 sql 文件包含多个批处理语句。我的问题是,如何从文件的执行中捕获返回代码。特别是,即使 sql 文件中的至少一个批处理语句失败(不仅仅是 sql 文件中最后一个批处理语句的状态),也会出现错误代码。
我从雪花社区问题中找到了以下内容。但是,当我在 powershell 脚本中的 Invoke-Expression 行之后使用它时,我得到的只是按原样打印的字符串。
回显 %errorlevel%"
请帮忙。
编辑 2020 年 9 月 11 日 我了解到在 powershell 中相当于 %errorlevel% 是 $?。所以,我加了$?在我的 powershell 脚本文件中的 Invoke-Expression 行之后。但是,即使 snowsql 脚本因错误而失败,它也始终返回 TRUE(表示成功)。
请问有什么想法吗?
谢谢你。斯里尼·西拉姆