Nearly todo administrador de sistemas tem que lidar com tarefas agendadas. Eles são incrivelmente úteis para fazer algo baseado em vários gatilhos, mas requerem muito esforço manual para configurar corretamente.
O benefício das tarefas agendadas é que você pode construir uma com um profundo nível de sofisticação com opções de gatilhos e vários contextos de segurança. Mas onde reina a complexidade, podem surgir erros de configuração. Quando está a desenvolver estes scripts de automação, pode criar uma tarefa agendada com o PowerShell para facilitar o processo. Usando o PowerShell ajuda a padronizar o trabalho de gestão e configuração envolvido com tarefas agendadas intrincadas, o que tem o benefício adicional de evitar os erros habituais que derivam da entrada manual.
Aumentar uma acção de tarefa agendada
No mínimo, uma tarefa agendada tem uma acção, um gatilho e um grupo de definições associadas. Uma vez criada a tarefa, você também precisa registrá-la no sistema. Você precisa executar cada ação separadamente para criar uma única tarefa agendada.
Para criar a ação, use o cmdlet New-ScheduledTaskAction que especifica o comando a ser executado. Vamos criar uma acção que recebe uma pequena meta e invoca um script PowerShell.
O comando abaixo dá um exemplo de invocar o motor PowerShell e passar um script para ele usando todas as opções de linha de comando apropriadas para fazer o script correr não-interactivamente. O ficheiro do script reside na máquina em que a tarefa agendada será executada em.
$Action = New-ScheduledTaskAction -Execute 'pwsh.exe' -Argument '-NonInteractive -NoLogo -NoProfile -File "C:\MyScript.ps1"'
Criar um trigger
Next, você precisa de um trigger. Você tem vários valores disponíveis, mas esta tarefa usará um tempo específico — 3 da manhã — para executar este script uma vez. Para uma lista completa de opções, veja a página de ajuda do New-ScheduledTaskTrigger cmdlet.
$Trigger = New-ScheduledTaskTrigger -Once -At 3am
Criar configurações
Next, crie a tarefa agendada usando o comando New-ScheduledTask. Este comando requer um valor para o parâmetro Settings, mesmo que você não esteja usando nenhum especial. É por isso que você executa New-ScheduledTaskSettingsSet para criar um objeto para passar aqui.
$Settings = New-ScheduledTaskSettingsSet
Criar a tarefa agendada
Depois de atribuir todos os objetos como variáveis, passe cada uma destas variáveis para o comando New-ScheduledTask para criar um objeto de tarefa agendada.
$Task = New-ScheduledTask -Action $Action -Trigger $Trigger -Settings $Settings
Registar a tarefa agendada
Neste ponto, você criou um objeto de tarefa agendada na memória. Para adicionar a tarefa agendada no computador, você deve registrar a tarefa agendada usando o comando Register-ScheduledTask cmdlet.
O exemplo abaixo registra uma tarefa agendada para ser executada sob um determinado nome de usuário. Para executar a tarefa sob o contexto de um determinado usuário, você tem que fornecer a senha. É útil olhar a documentação do comando Register-ScheduledTask para ver todas as opções para usar com este cmdlet.
Register-ScheduledTask -TaskName 'My PowerShell Script' -InputObject $Task -User 'username' -Password 'passhere'
Se você seguiu todos os passos corretamente, você deve ver sua tarefa agendada recém-criada no Agendador de Tarefas.
Após a tarefa agendada ser registrada e aparecer no Agendador de Tarefas, você pode agora rodar o cmdlet Get-ScheduledTask para ver a tarefa.