Como automatizar o PowerShell Scheduler com o Task Scheduler

Microsoft Windows Task Scheduler pode ajudá-lo a lançar automaticamente um programa ou PowerShell Scheduler num determinado momento ou quando certas condições são cumpridas. Você também pode agendar o envio de e-mails e até mesmo a exibição de certas mensagens. Neste blog, vamos mostrar-lhe como executar um script PowerShell do Task Scheduler que alertará sobre qualquer instalação de software em um computador local.

Também vamos criar tarefas agendadas usando scripts PowerShell. Você aprenderá como:

  • Criar Tarefas com Agendador de Tarefas
  • Modificar ou Apagar Tarefas Agendadas
  • Criar Tarefas Agendadas com PowerShell Scripts.

Criar Tarefas com Agendador de Tarefas

Abrir Agendador de Tarefas pressionando “Windows+R” e depois digitando “taskschd.msc” na janela que se abre. Em seguida, dê os seguintes passos:

1. Clique em “Criar uma tarefa” e digite um nome e descrição para a nova tarefa. Para executar o programa com privilégios de administrador, marque a caixa “Executar com os privilégios mais altos”. No nosso exemplo, vamos atribuir uma conta de serviço para executar a tarefa e executá-la independentemente de o usuário estar logado.

2. Mude para a aba Triggers e clique no botão “New…”. Aqui você pode especificar as condições que acionam a tarefa a ser executada. Por exemplo, você pode executá-la na programação, no logon, no modo inativo, na inicialização ou sempre que um determinado evento ocorrer. Queremos que nossa tarefa seja acionada por qualquer nova instalação de software, por isso escolhemos “Em um evento” no menu suspenso e selecionamos “Aplicativo” nas configurações de Log. Deixe o parâmetro “Source” em branco e defina o EventID para “11707”. Clique em “OK” para salvar as alterações.

3. Navegue até a guia “Actions” (Ações) e clique em “New…” (Novo). Aqui você pode especificar as ações que serão executadas sempre que as condições de acionamento forem cumpridas. Por exemplo, você pode enviar um e-mail ou exibir uma mensagem. No nosso caso, queremos iniciar um programa, por isso precisamos de criar o script PowerShell que queremos executar e guardá-lo com a extensão “ps1”. Pode encontrar o script aqui; ele irá enviar um alerta com os detalhes do evento sobre o software instalado.

Para agendar o script PowerShell, especifique os seguintes parâmetros:

  • Acção: Iniciar um programa
  • Program\script: powerhell
  • Adicionar argumentos (opcional): -Arquivo

> Clique em “OK” para guardar as alterações.

4. O separador “Condições” permite-lhe especificar as condições que, juntamente com o disparador, determinam se a tarefa deve ser executada. No nosso caso, devemos deixar as configurações padrão nesta aba.

>5. Você também pode configurar parâmetros adicionais para a sua tarefa agendada na aba “Settings” (Configurações). Para o nosso exemplo, no entanto, vamos deixá-los inalterados.

6. Quando a tarefa estiver completamente configurada, o sistema irá pedir-lhe a palavra-passe da conta de serviço. Note que esta conta deve ter o “Log on as Batch Job” direito. Digite a senha e clique em “OK” para salvar a tarefa.
7. Para que o Agendador de Tarefas funcione corretamente, o serviço do Agendador de Tarefas deve estar configurado para iniciar a execução do “Services.msc”. Na lista de serviços, encontre o Agendador de Tarefas e clique duas vezes sobre ele. No separador Geral, defina o tipo de arranque para “Automático” e clique em OK para guardar a alteração.

Agora sempre que for instalado um novo software no seu Microsoft Windows Server, será notificado através de um e-mail que detalha a hora da instalação, o nome do software e o ID do utilizador (SID) da pessoa que o instalou.

Modificar ou Eliminar Tarefas Agendadas

Para modificar uma tarefa existente, clique com o botão direito do rato na lista, seleccione Propriedades, edite as definições necessárias e clique em OK. Para apagar uma tarefa agendada, clique com o botão direito do rato, seleccione Delete e confirme a acção.

Criar Tarefas Agendadas com PowerShell Scripts

Agora que saiba como criar uma tarefa usando o Agendador de Tarefas, vamos descobrir como criar uma tarefa agendada usando o PowerShell. Suponha que queremos que a nossa tarefa seja lançada diariamente às 10 da manhã, e deve executar o script PowerShell que você pode encontrar aqui, que irá monitorar as alterações na adesão do grupo no site Active Directory.

No Windows Powershell 2.0 (Windows 7, Windows Server 2008 R2), para criar uma tarefa agendada, você deve usar o módulo TaskScheduler. Instale o módulo executando o comando “Import-Module TaskScheduler” e use o seguinte script para criar uma tarefa que irá executar o script PowerShell chamado GroupMembershipChanges.ps1 diariamente às 10h:

Import-Module TaskScheduler $task = New-Task$task.Settings.Hidden = $trueAdd-TaskAction -Task $task -Path C:\Windows\system32\WindowsPowerShell\v1.0\powershell.exe –Arguments "-File C:\Scripts\GroupMembershipChanges.ps1"Add-TaskTrigger -Task $task -Daily -At "10:00"Register-ScheduledJob –Name "Monitor Group Management" -Task $task

Windows PowerShell 4.0 (Windows Server 2012 R2 e superior) não inclui o módulo Task Scheduler, por isso este script não irá funcionar. Em vez disso, o PowerShell 3.0 e 4.0 introduziu novos cmdlets para criar tarefas agendadas, New-ScheduledTaskTrigger e Register-ScheduledTask, o que torna a criação de uma tarefa agendada muito mais fácil e mais conveniente. Então vamos criar uma tarefa que executará nosso script diariamente às 10 da manhã usando a conta do sistema (SYSTEM). Esta tarefa será executada por uma conta com privilégios elevados.

$Trigger= New-ScheduledTaskTrigger -At 10:00am –Daily # Specify the trigger settings$User= "NT AUTHORITY\SYSTEM" # Specify the account to run the script$Action= New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "C:\PS\StartupScript.ps1" # Specify what program to run and with its parametersRegister-ScheduledTask -TaskName "MonitorGroupMembership" -Trigger $Trigger -User $User -Action $Action -RunLevel Highest –Force # Specify the name of the task

Outras opções de acionamento que podem ser úteis na criação de novas tarefas incluem:

  • -AtStartup – Aciona sua tarefa na inicialização do Windows.
  • -AtLogon – Aciona sua tarefa quando o usuário inicia em.
  • -Once – Aciona sua tarefa uma vez. Você pode definir um intervalo de repetição usando o parâmetro -RepetitionInterval (Intervalo de repetição).
  • -Semanalmente – Aciona sua tarefa uma vez por semana.

Note que, usando estes cmdlets, não é possível acionar a execução “em um evento” como fizemos com a ferramenta Agendador de Tarefas. Os scripts PowerShell com triggers “em um evento” são muito mais complicados, então esta é uma desvantagem real de usar o PowerShell em vez do Task Scheduler.

Conclusion

Como você pode ver, é fácil criar tarefas agendadas usando o Task Scheduler ou o PowerShell. Mas lembre-se que alterações impróprias nas suas tarefas agendadas podem causar interrupções de serviço e degradar o desempenho do servidor. Portanto, é essencial rastrear todas as alterações nas suas tarefas agendadas.

Jeff é um Diretor de Engenharia de Soluções Globais na Netwrix. Ele é um blogueiro, palestrante e apresentador de longa data da Netwrix. No blog da Netwrix, Jeff compartilha lifehacks, dicas e truques que podem melhorar drasticamente sua experiência em administração de sistemas.

Deixe uma resposta

O seu endereço de email não será publicado.