[英]Return value from batch file to powershell
我有一个批处理文件,该文件调用SQL脚本来发送电子邮件。 该批处理文件嵌入在Powershell中。 如何将成功或失败的返回代码从批处理文件返回到Powershell。 我尝试了以下
在批处理文件中
exit /b %ERRORLEVEL%
在PowerShell中
cmd.exe /c 'C:\scripts\send_email_sp_prd.bat F'
if($LastExitCode -eq -0){
write-host "Success"
}
else
{
write-host "Failure"
}
即使SQL脚本失败,批处理文件也将返回0
值,这不是我想要的值。 有没有更好/正确的方法来做到这一点?
我不确定您的帖子是逐字记录的脚本,但您在0之前有一个-。尝试将if块的第一行更改为$ LastExitCode -eq 0
if($LastExitCode -eq 0){
write-host "Success"
}
else
{
write-host "Failure"
}
就个人而言,我将消除批处理文件,并通过PowerShell进行所有操作,这在根据命令输出进行操作或验证方面将更加容易。 在功能选择中的SQL Management Studio安装程序中,安装“管理工具”以获取PowerShell模块。 安装模块后,您可以创建一个脚本来执行您的工作。 这是我快速创建的,但是您可以使用它或类似的东西:
Function Invoke-Sqljob {
[CmdletBinding()]
param(
[Parameter(Mandatory=$true)]
[String[]] $ServerInstance,
[Parameter(Mandatory=$true)]
[String[]] $DatabaseName,
[Parameter(Mandatory=$true)]
[String[]] $Query
)
Import-Module SQLPS
Invoke-Sqlcmd -ServerInstance "$ServerInstance" -Database "$DatabaseName" -Query "$Query"
}
您将按以下方式执行Invoke-Sqljob:
Invoke-Sqljob -ServerInstance "DB_Server\SQL_Instance" -Database "DB_Name_Here" -Query "EXEC send_mail_sp_prd"
如果您无法或宁愿使用sql身份验证,则可以使用Invoke-Sqlcmd cmdlet的-Username和-Password参数。
希望这可以帮助您解决问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.