Como enviar por e-mail a saída de tarefas agendadas?

5

Em sistemas Unix, o serviço de tarefas agendadas enviará por e-mail qualquer saída produzida por uma tarefa agendada. Se nenhuma saída for produzida, nenhum email será enviado. Como posso fazer a mesma coisa no Windows Server 2003 ou 2008? Existe uma maneira de chamar um arquivo em lotes ou executável que executará minha tarefa, capturará a saída e enviará por e-mail somente se houver saída?

Se você propor uma solução PowerShell, observe que eu só tenho o PowerShell 1.0.

    
por Starfish 21.03.2012 / 18:22

2 respostas

1

Eu uso o autoIT para esse tipo de coisa. É muito fácil de usar e tem essa funcionalidade embutida. Os arquivos de ajuda estão cheios de exemplos e snippets que fazem exatamente o que você está procurando. Se eu tivesse mais detalhes sobre a tarefa em mãos, teria uma resposta mais específica.

Você deve conseguir localizar o que precisa daqui.

    
por 23.03.2012 / 06:38
0

Pelo menos no Windows Server 2008, você pode usar a seguinte rota:

  1. Configure sua tarefa regular usando o agendador de tarefas. Se você precisa capturar a saída do seu programa, estou assumindo que é um programa de linha de comando. Você pode redirecionar a saída do comando a linha de comando do Windows para um arquivo como nos sistemas Unix. Para isso, eu escreveria um lote que executa meu comando e captura sua saída:

    @ECHO OFF
    REM Run command
    mycmd.exe > outfile.txt
    
    REM Check that outfile exists
    IF NOT EXIST outfile.txt (
        @echo File does not exist
        exit 2
    )
    
    REM Compare outfile to a known empty file
    TYPE nul >  blank.txt
    FC outfile.txt blank.txt > nul
    
    REM Check result, and remove blank file.
    IF errorlevel 1 (
        del blank.txt
        @echo File is not empty
        exit 0
    ) ELSE (
        del blank.txt
        @echo File is empty
        exit 1
    )
    
  2. As tarefas agendadas são registradas no Registro de eventos de aplicativos e serviços, em Microsoft > Windows > Agendador de Tarefas > Operacional.

    Você pode então criar uma segunda tarefa que é levantada quando uma entrada é adicionada nesse log.

    Você precisa definir o acionador da ação de acordo. O que você precisa fazer é criar um filtro de eventos em 201 eventos (Ação finalizada), cujos nomes de tarefas correspondem ao nome de sua tarefa que executa o script acima e cujo código de resultado é 0. Deve ser possível configurar com o agendador de tarefas UI, ou você pode usar a filtragem XPath.

    Em seguida, defina a ação dessa tarefa para "Enviar um email" e defina os parâmetros que precisar. Defina o nome do arquivo anexado para o caminho de outfile.txt e pronto.

  3. Você pode usar a mesma técnica para manipular os códigos de retorno 1 e 2, para avisar sobre um arquivo de saída vazio ou ausente, se necessário.

Muito fácil, não? : D Faz-me amar o Linux mais e mais todos os dias.

Editar Se você tiver um programa mailer que funcione na linha de comando, você pode simplesmente chamá-lo do script que executa o comando, eliminando a necessidade de criar a tarefa baseada em evento.

    
por 25.03.2012 / 12:24