[英]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.