A tarefa do Windows continua em execução se o programa chamado der uma exceção?

0

Portanto, tenho uma tarefa agendada que estou executando sob demanda.

Existe uma maneira de forçar uma tarefa a terminar se ocorrer um erro?

Quando ele é executado com sucesso, o status não é atualizado sozinho, eu preciso atualizar manualmente. No entanto, quando o programa chamado lança exceções, a tarefa permanece no estado de execução. Parece que eu quero simplesmente parar e registrar a exceção.

No script do meu powershell, estou chamando um método web api em um servidor de desenvolvimento. Como isso. Observe que o tratamento de exceções está apenas tentando capturar quaisquer problemas com o script invocando a solicitação da web, não a própria API da web. O aplicativo da Web tem sua própria manipulação de exceções & logging.

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
}}

Estou registrando a exceção no aplicativo da web, portanto, quando há uma exceção, notei que a tarefa ainda estava em execução e tive que forçá-la a parar. Isso não é algo que eu realmente queira fazer em um sistema de produção.

Como posso forçar a tarefa a parar se o programa chamado encontrar uma exceção?

Uma coisa que eu também estou fazendo dentro do script powershell é usar try

    
por bitshift 16.02.2017 / 17:35

1 resposta

1

Como posso forçar a tarefa a parar se o programa chamado encontrar uma exceção?

Com base na lógica que você forneceu na sua pergunta, você poderia simplesmente colocar um intervalo dentro do Catch bloqueia para que o script pare de executar quando lança uma exceção.

Sintaxe de exemplo

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
}

Mais recursos

por 18.02.2017 / 02:03