【问题标题】:Catching Error from SQL Agent Job calling a .exe从调用 .exe 的 SQL 代理作业捕获错误
【发布时间】:2019-10-25 08:29:34
【问题描述】:

我想从 SQL Server 代理作业运行 .exe。 .exe 托管在与我的 SQL Server 代理不同的位置。 我在 MSSMS 的 Step 属性中将我的工作定义为 PowerShell 类型,并定义了以下命令:

Invoke-Command -ComputerName "myserver"   -ScriptBlock {
      try
       {
         C:\...\......\myexe.exe  2>&1  -ErrorAction Stop 
        } 
    catch
       {
        Exit 1
        }
    } 

其中 myexe.exe 是托管在远程服务器驱动器中的可执行文件。 当我这样做时,我收到以下错误:

Message
Unhandled exception. System.Exception: A Forced Exception for testing purpose
At line:3 char:13
+       $res= & C:\........... ...
+             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (Unhandled excep...testing purpose:String) [], RemoteException
    + FullyQualifiedErrorId : NativeCommandError

.....

这是在我的 .exe 中引发的错误,但实际上我希望作业在成功时出错。

所以问题是,如何处理抛出到 myexe.exe 文件中的异常并将其捕获到我的 SQL 代理作业中? 我希望 sql 代理作业出错并且在输出中写入我抛出的异常消息。

非常感谢您的帮助

【问题讨论】:

    标签: powershell exception invoke-command sql-agent-job sql-agent


    【解决方案1】:

    尝试这样做:

    $FilePath = "C:\...\.exe"
    $ArgumentList = "your args if you need"
    $consoleOutput = (cmd /s /c "$FilePath $ArgumentList")
    

    不要使用“-ErrorAction Stop”

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多