2016-06-02 2 views
0

전자 메일을 보내기 위해 SQL 스크립트를 호출하는 배치 파일이 있습니다. 이 배치 파일은 powershell에 포함되어 있습니다. 배치 파일에서 성공 또는 실패 리턴 코드를 powershell로 리턴하려면 어떻게해야합니까? 나는 SQL 스크립트가 실패하더라도 PowerShell에서배치 파일에서 powershell 로의 반환 값

exit /b %ERRORLEVEL% 

cmd.exe /c 'C:\scripts\send_email_sp_prd.bat F' 
if($LastExitCode -eq -0){ 
write-host "Success" 
} 
else 
{ 
write-host "Failure" 
} 

, 배치 파일은 내가 원하는 것이 아니다 0의 값을 반환 배치 파일에서 다음

을 시도 . 이 작업을 수행하는 더 좋고/올바른 방법이 있습니까?

+1

Powershell에 배치 파일을 삽입하는 것을 중지하고 powershell에서 모든 작업을 수행하십시오. – TheMadTechnician

답변

1

개인적으로 배치 파일을 제거하고 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" 

} 

다음과 같이 호출-Sqljob을 실행하는 것입니다 : 당신이 할 수없는 또는 오히려 SQL 인증을 사용하는 경우

Invoke-Sqljob -ServerInstance "DB_Server\SQL_Instance" -Database "DB_Name_Here" -Query "EXEC send_mail_sp_prd" 

을 Invoke-Sqlcmd cmdlet의 -Username 및 -Password 매개 변수를 사용할 수 있습니다.

희망 사항은 문제를 해결하는 데 도움이됩니다.

+0

Tyler에게 감사 드리며 지연된 응답으로 인해 사과드립니다. 이 코드는 다른 사람이 작성한 코드의 일부로, 너무 많이 변경하지는 않겠지 만 결국에는 Powershell의 모든 것을 일괄 적으로 변경했습니다. –

+0

문제가 없습니다. Vibhav MS, PowerShell에서 모든 것을 변환하고 사용할 수있어서 다행했습니다! –

1

나는 귀하의 게시물이 그대로 스크립트의 경우 잘 모르겠지만, 당신은이 - 0. 시도가

if($LastExitCode -eq 0){ 
    write-host "Success" 
} 
else 
{ 
    write-host "Failure" 
} 
LastExitCode -eq 0 $에 경우 블록의 첫 번째 라인을 변경하기 전에
+0

지적 해 주셔서 고마워하지만 내가 여기에 열쇠를 꽂았을 때 그 유형이었다. –

관련 문제