如何解决在Powershell脚本中捕获Snowsql返回代码
我正在使用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%”
请帮助。
编辑9/11/2020 我了解到Powershell中相当于%errorlevel%的是$?。 所以,我加了$?在我的Powershell脚本文件中的Invoke-Expression行之后。但是,即使sNowsql脚本因错误而失败,它总是返回TRUE(表示成功)。
有什么想法吗?
谢谢。 Srini Seelam
解决方法
最后,经过更多研究,我找到了答案。
$ LastExitCode将提供snowsql执行的退出代码。 并且,为了使其正常工作,我们必须在snowsql配置文件中设置“ exit_on_error = true”选项或将其作为命令行参数传递。
我的代码现在如下所示
$Command = '&"C:\Program Files\Snowflake SnowSQL\snowsql.exe"' + ' --config "' + $ConfigFilePath + '" --filename "' + $sFilePath + '\' + $sFileName + '.sql"' + $sParams
Invoke-Expression -Command $Command
Write-Host "Snowsql returned exit code: $LastExitCode"
exit $LastExitCode
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。