É possível que um script Powershell retorne o resultado da última execução do agendador de tarefas do Windows 2008?

1

Eu configurei uma tarefa agendada em um Windows 2008 Server com duas ações. A primeira ação é executar um aplicativo que se conecta a um banco de dados SQL e gera arquivos XML. A segunda ação é executar um script do Powershell. Desde que a tarefa inicie corretamente, o script simplesmente envia uma mensagem de correio informando que a tarefa foi iniciada e anexa o arquivo de log mais recente criado pelo aplicativo de extração de dados.

Se a tarefa agendada não for iniciada (não foi ontem à noite e o último resultado da execução indicou que era porque "Uma instância dessa tarefa já está em execução"), o script Powershell não é disparado, por isso não Não receba um email. Este é um indicador rápido de que a tarefa não foi executada, no entanto, eu gostaria que o script Powershell retornasse o Last Last Result do agendador de tarefas se a tarefa não fosse executada (embora toda a hora estivesse bem). Eu sou um iniciante com o Powershell, e eu apenas arranhei a superfície com ele, então isso é possível, ou estou pedindo o impossível? Existe outra maneira óbvia de fazer isso? Devo ter apenas uma tarefa agendada com uma única ação para executar um script Powershell que executa o aplicativo e disparar um email de notificação com os detalhes da última execução / log?

    
por kafka 10.10.2012 / 10:33

1 resposta

2

Eu descobri uma maneira de conseguir isso. Em primeiro lugar, encontrei este artigo Monitorando o último resultado das tarefas agendadas no Windows . Isso continha um script escrito em Perl sobre como obter o resultado da última execução de uma tarefa agendada.

Eu comecei a convertê-lo para o Powershell e é isso que eu tenho $taskName = "ETL" $result = (schtasks /query /FO LIST /V /TN $taskName | findstr "Result") $result = $result.substring(12) $lastResult = $result.trim()

Então, simplesmente insiro o valor na notificação por e-mail.

    
por 10.10.2012 / 14:38