如果调用的程序抛出异常,Windows 任务是否继续运行?

如果调用的程序抛出异常,Windows 任务是否继续运行?

所以我有一个按需运行的计划任务。

如果发生错误,有没有办法强制结束任务?

当它成功运行时,状态不会自动更新,我必须手动刷新。但是,当被调用的程序抛出异常时,任务仍处于运行状态。看来我希望它只是停止并记录异常。

在我的 powershell 脚本中,我正在调用开发服务器上的 web api 方法。像这样。请注意,异常处理仅尝试捕获调用 web 请求的脚本的任何问题,而不是 web api 本身。Web 应用程序有自己的异常处理和日志记录。

try {
    $order_api = "http://dev-server.testserver.com/api/orderpipeline/Runfolder";
    $order_response = Invoke-WebRequest -Uri $order_api -UseDefaultCredentials -ContentType "application/json" -Method Post -Body $jsonParams -TimeoutSec 10000;
}
catch{
        # Capture exception detail 
        $err_message =  $_.Exception | format-list -force | Out-String;     
        $log_message = $PSCommandPath + "`r`n" + " Something went wrong trying to invoke web request api, exception follows: " +  "`r`n" + $err_message;

        # Write to application event log
        New-EventLog –LogName Application –Source “Order pipeline Script”
        Write-EventLog –LogName Application –Source “Order pipeline Script” –EntryType Error –EventID 1  –Message $log_message
}}

我在 Web 应用程序中记录了异常,因此当出现异常时,我注意到任务仍在运行,因此我不得不强制停止它。这不是我真正想在生产系统上做的事情。

如果被调用的程序遇到异常,如何强制停止任务?

我在 powershell 脚本中做的一件事是使用 try

答案1

如果被调用的程序遇到异常,如何强制停止任务?

根据你在问题中提供的逻辑,你可以放置一个休息抓住块来告诉脚本在引发异常时停止执行。

示例语法

try 
{
    $order_api = "http://dev-server.testserver.com/api/orderpipeline/Runfolder";
    $order_response = Invoke-WebRequest -Uri $order_api -UseDefaultCredentials -ContentType "application/json" -Method Post -Body $jsonParams -TimeoutSec 10000;
}
catch
{
    # Capture exception detail 
    $err_message =  $_.Exception | format-list -force | Out-String;     
    $log_message = $PSCommandPath + "`r`n" + " Something went wrong trying to invoke web request api, exception follows: " +  "`r`n" + $err_message;

    # Write to application event log
    New-EventLog –LogName Application –Source “Order pipeline Script”
    Write-EventLog –LogName Application –Source “Order pipeline Script” –EntryType Error –EventID 1  –Message $log_message
    break
}

更多资源

相关内容