Adam O Automador

precisa de criar muitas tarefas agendadas ou automatizar a criação de tarefas agendadas? Se sim, estás com sorte. Neste artigo, você vai aprender como gerenciar tarefas agendadas usando PowerShell.

As tarefas agendadas que executam acções simples são rápidas de fazer e confortáveis o suficiente para repetir usando a interface do aplicativo de escalonamento de Tarefas (GUI). Mas, administradores de sistema ou desenvolvedores podem precisar de implementar tarefas mais complicadas com vários horários, gatilhos ou argumentos.

felizmente, você pode usar PowerShell para criar e gerenciar tarefas agendadas. A gestão de tarefas agendadas com PowerShell é possível com o uso do módulo ScheduledTasks que está incorporado ao Windows.

tabela de conteúdo

pré-requisitos

Uma vez que este é um tipo de artigo de aprendizagem por-fazer, existem alguns pré-requisitos para que você possa acompanhar. Abaixo estão os requisitos para criar tarefas programadas PowerShell usando PowerShell.

  • os exemplos neste artigo usam o Windows 10. Mas o Windows Server 2012 e o mais recente podem fazer o mesmo.
  • Windows PowerShell 5.1 ou PowerShell 7.
  • ajudaria se você tivesse um editor de script como Visual Studio Code, Notepad++, ou Windows PowerShell ISE.

criando uma nova tarefa programada

uma tarefa programada requer um mínimo de dois componentes para funcionar; ação e ativar. Adicionar um contexto de segurança e um conjunto de configurações relacionadas é opcional. Para uma melhor compreensão, consulte a breve explicação para cada componente de tarefa agendada abaixo:

  • ação-a ação que é executada pela tarefa agendada. Uma ação é tipicamente executar um programa ou um script. Uma tarefa agendada pode ter mais de uma ação.
  • Trigger – controls quando a tarefa agendada é executada. Gatilhos podem ser baseados no tempo, como, definir um horário para a recorrência diária ou horária. Gatilhos também podem ser baseados em atividade, que executa uma tarefa baseada em atividades detectadas, como a inicialização do computador, um usuário faz login, ou eventos registrados.
  • Principal-controla o contexto de segurança usado para executar a tarefa agendada. Entre outras coisas, um princípio inclui a conta de usuário e o privilégio necessário usado pela tarefa agendada.
  • configuração-é um conjunto de opções e condições que controlam o comportamento da tarefa agendada. Como exemplo, você pode personalizar uma tarefa para ser removida após um número consecutivo de dias que a tarefa não é utilizada.

durante uma criação de Tarefas agendada, o principal e a configuração não são explicitamente exigidos. Os valores padrão são usados em vez disso.

criando uma acção de tarefa

quando quiser que uma tarefa agendada faça alguma coisa, crie uma nova acção de tarefa. Neste exemplo, você criará uma tarefa que chamará de PowerShell.exe e faz um guião. Certifique-se de ter o seu editor de script pronto.

Note que o programa abaixo é apenas um exemplo Aleatório e você não é obrigado a usá-lo. Você pode usar qualquer script que quiser. No entanto, usar o script abaixo cria um resultado facilmente verificável que pode confirmar se a tarefa agendada funcionou.

o programa de exemplo abaixo, quando executado, obtém os dez últimos eventos do diário de eventos da aplicação. Em seguida, exportar os eventos para um novo arquivo XML no c:\temp pasta. Copie o código em baixo, cole-o no seu editor de programas e grave com o nome do ficheiro Get-LatestAppLog.ps1 em qualquer pasta que desejar.

o código abaixo usa oNew-ScheduledTaskAction para criar um novo objeto de ação programada armazenado na variável$taskAction variável. Esta ação irá chamar o powershell.exe executável e passar o argumento para executar o C:\scripts\Get-LatestAppLog.ps1.

Copiar o comando acima e execute-o no PowerShell. The resulting object in the $taskAction variable should look like the screenshot below.

Criar uma nova Tarefa Agendada para a Ação

Adicionar um Gatilho

Agora que você tem uma ação de tarefa criada, o próximo passo é definir o momento em que a tarefa deve executar. O cmdlet a usar para criar um gatilho é o New-ScheduledTaskTrigger cmdlet. O comando abaixo cria um gatilho para executar diariamente às 15 horas. Copie e execute o código em PowerShell.

# Create a new trigger (Daily at 3 AM)$taskTrigger = New-ScheduledTaskTrigger -Daily -At 3PM$tasktrigger

the resulting object in the$tasktrigger variable should look the same as the image below.

Criação de um Gatilho (Diariamente, às 3 da manhã)

Registar as Tarefas

até agora, você criou os requisitos de base para criar uma nova tarefa agendada. O próximo passo é criar a tarefa agendada e registrá-la no sistema.

o código abaixo usa o Register-ScheduledTask cmdlet para registrar a tarefa agendada. The -Action parameter is needed to pass the task action object stored in the variable named $taskAction. O parâmetro -Trigger é necessário para passar o $taskTrigger conteúdo variável.

# Register the new PowerShell scheduled task# The name of your scheduled task.$taskName = "ExportAppLog"# Describe the scheduled task.$description = "Export the 10 newest events in the application log"# Register the scheduled taskRegister-ScheduledTask ` -TaskName $taskName ` -Action $taskAction ` -Trigger $taskTrigger ` -Description $description

Copie o código acima e execute-o em PowerShell. Como resultado, a nova tarefa agendada é registrada, como mostrado abaixo.

Registrar a nova tarefa agendada

Execução de Tarefas

Depois de criar uma tarefa agendada, você deve confirmar que a tarefa agendada agora existe no sistema. Abra o escalonador de tarefas e encontre a tarefa agendada na lista. Você deve ver a tarefa registrada na lista.

nova tarefa agendada, conforme visto no Agendador de Tarefas do aplicativo

Você também pode confirmar o registrado tarefa agendada existe executando o comando do PowerShell abaixo.

Get-ScheduledTaskInfo -TaskName ExportAppLog

você deve então ver uma saída semelhante, como a imagem do resultado abaixo.

Obtendo a informação da tarefa programada.

e, finalmente, a sua nova tarefa programada deve estar a trabalhar para determinar se o que fez até agora foi bem sucedido. Para testar a tarefa agendada, você pode esperar pelo próximo programa de execução ou usar o comando abaixo para ativar manualmente.

Start-ScheduledTask -TaskName ExportAppLog

Depois de executar o código, você deve ver um resultado semelhante ao mostrado abaixo. Como você pode ver, a execução do Código criou um arquivo XML, o que indica que a tarefa agendada funcionou como esperado.

Executar a Tarefa Agendada

a Atualização de uma Tarefa Agendada Existente

Depois de criar uma tarefa agendada, alguns de seus aspectos podem precisar de atualização em algum ponto. Talvez você queira fazê-lo correr uma hora antes ou alterar a localização do arquivo de script. Essas são algumas das mudanças na tarefa agendada que podem ser necessárias.

nas próximas secções, irá aprender a fazer alterações às tarefas agendadas registadas existentes usando o PowerShell.

alterando a conta do Utilizador, as opções de segurança e as opções de compatibilidade

na secção anterior, a tarefa agendada é executada no mesmo contexto da conta de utilizador que a criou. E se a tarefa precisa ser executada usando outra conta de usuário, como uma conta de serviço, por exemplo.

neste exemplo, você irá modificar as opções de segurança da tarefa agendada para a configuração abaixo.

  • deve alterar a conta de utilizador para executar a tarefa agendada.
  • Permite que a tarefa seja executada, quer o utilizador esteja LIGADO ou não.
  • execute o com os mais altos níveis de privilégios.
  • defina a compatibilidade da tarefa para o Windows 10.

a primeira linha do código abaixo irá criar um objecto principal com a nova conta de utilizador e definir a tarefa a executar com os privilégios mais elevados. Certifique-se de alterar o valor do parâmetro -UserID conforme necessário. A segunda linha configura a compatibilidade da tarefa com o Windows 10.

Finalmente, a terceira linha de atualizações ExportAppLog **tarefa agendada usando os valores armazenados no the $taskPrincipal e $taskSettings variáveis. Copie o código abaixo e execute-o em PowerShell.

# Set the task principal's user ID and run level.$taskPrincipal = New-ScheduledTaskPrincipal -UserId 'DEVPC\svcTask' -RunLevel Highest# Set the task compatibility value to Windows 10.$taskSettings = New-ScheduledTaskSettingsSet -Compatibility Win8# Update the task principal settingsSet-ScheduledTask -TaskName 'ExportAppLog' -Principal $taskPrincipal -Settings $taskSettings

Você vai notar que o -Compatibility parâmetro valor é Win8. Não te confundas. Parece que a Microsoft não atualizou a seleção de versão “mais recente” desde o Windows 8. No entanto, a especificação do valorWin8 resultará na compatibilidade do Windows 10.

em seguida, o comando a seguir usa o Set-ScheduledTask cmdlet para atualizar o existente ExportAppLog **tarefa agendada. Certifique-se de alterar o valor da senha no parâmetro -Password para usar a senha correta da conta de usuário.

# Update the task user account and passwordSet-ScheduledTask -TaskName 'ExportAppLog' -User $taskPrincipal.UserID -Password 'PASSWORD'

Depois de executar o comando acima, a tarefa agendada é atualizada. Se você verificar a tarefa agendada, você pode confirmar que as opções de segurança mudaram.

A opção de segurança, a conta do usuário, e configurações de compatibilidade

Alterar o Gatilho

às Vezes o gatilho agenda precisa ser alterado. Talvez por causa de alguns ajustes operacionais ou otimização de recursos. Em qualquer caso, você também pode usar PowerShell para substituir ou adicionar gatilhos a uma tarefa agendada.

actualmente, o ‘exportapplog’ de tarefas agendadas é despoletado todos os dias às 15 horas. Suponha que você precisa mudar o horário do gatilho para o dia às 4:30 e 1:00 da manhã. Você primeiro precisa criar dois novos objetos de ativação de tarefas para os dois horários.

$taskTrigger1 = New-ScheduledTaskTrigger -Daily -At 4:30PM$taskTrigger2 = New-ScheduledTaskTrigger -Daily -At 1:00AM

então, para atualizar o gatilho da tarefa agendada, use o comando abaixo. Você vai notar que o parâmetro -Triggeraceita os dois objetos que desencadeiam a tarefa, nomeadamente$taskTrigger1e$taskTrigger2.além disso, uma vez que está a actualizar uma tarefa agendada com uma senha gravada para a conta do utilizador, terá de fornecer os valores-User e -Password novamente.

Set-ScheduledTask -TaskName 'ExportAppLog' -Trigger $taskTrigger1,$taskTrigger2 -User 'DEVPC\svcTask' -Password 'PASSWORD'

abaixo está o resultado esperado após a execução do Código.

Atualizando a tarefa agendada com vários gatilhos

E como você pode ver abaixo, existem agora dois gatilhos no ExportAppLog tarefa agendada.

A tarefa Agendada com vários gatilhos

Eliminar e Restaurar uma Tarefa Agendada

Tarefas Agendadas podem tornar-se obsoletas ao longo do tempo. Em algum momento, você pode precisar realizar tarefas domésticas para tarefas agendadas. Nesta seção, você aprenderá como gerenciar a eliminação de tarefas agendadas em PowerShell.

fazendo backup de uma tarefa agendada

Antes de continuar a apagar tarefas agendadas, é boa prática fazer uma cópia de segurança primeiro. Fazer backup de tarefas agendadas lhe dá um ponto de restauração para quando as coisas correm mal.

não existe um cmdlet incorporado para fazer uma cópia de segurança de Tarefas agendada. Mas, tudo em PowerShell é um objeto, e exportar objetos para arquivo é possível. Quando você precisa fazer backup de um objeto para um arquivo, use o Import-Clixml cmdlet.

o código de exemplo abaixo exporta a tarefa agendada com o nome ExportAppLog para um ficheiro. Você pode alterar o nome do arquivo e localização por sua preferência.

A imagem abaixo mostra o ficheiro XML de saída esperado.

backup de uma Tarefa Agendada

Excluir uma Tarefa Agendada

Depois de garantir uma cópia de segurança da tarefa agendada, agora você pode remover a tarefa agendada. O código abaixo apaga a tarefa agendada com o nome ExportAppLog. Copie o código abaixo e execute em PowerShell.

# Unregister the scheduled taskUnregister-ScheduledTask -TaskName 'ExportAppLog' -Confirm:$false

embora não seja necessário, é sempre bom confirmar o resultado da eliminação da tarefa agendada. Use o comando abaixo para verificar se a tarefa agendada já não existe.

Get-ScheduledTask -TaskName 'ExportAppLog'

Se a tarefa agendada não existir mais, você deve obter um resultado como o mostrado abaixo.

Verificar se a tarefa agendada não existe mais

Note que a tarefa agendada de cópia de segurança não incluir senhas.

restaurando uma tarefa agendada

então você apagou a tarefa agendada, e então acontece que você não era suposto fazê-lo! E agora? Este tipo de situação faz você apreciar o conceito de backups ainda mais.

pode recriar a tarefa agendada usando o ficheiro de salvaguarda XML com o PowerShell. E aqui está como você pode fazer a restauração.

primeiro, importar a cópia de segurança XML para a sua sessão PowerShell. O código abaixo importa o arquivo c:\temp\ExportAppLog.xml. Como resultado, a variável $stBackup manterá os dados importados.

# Import the Schedule Task backup$stBackup = Import-Clixml -Path c:\temp\ExportAppLog.xml

Next, use o código abaixo para reiniciar o principal da tarefa LogOnType valor paraInteractive. A redefinição do valor do LogonType é fundamental para garantir a restauração bem sucedida de tarefas agendadas.

# Reset the logon type to "Run only when the user is logged on."$stBackup.Principal.LogonType = 'Interactive'

o próximo passo é criar um novo objecto de Tarefa Agendada. O código abaixo cria uma nova tarefa agendada. The $restoreTask variable stores the resulting scheduled task object.

Você vai notar que os valores passados aos parâmetros são os importados de backup. Os valores importados estão na variável $restoreTask. Os parâmetros são ActionTriggerSettings e Principal.

Depois de criar a tarefa agendada objeto, é hora de registrar a tarefa agendada. Use o código abaixo para registrar a tarefa agendada restaurada.

neste exemplo, o nome da tarefa é ‘ ExportAppLog_restored.’The InputObject parameter accepts the scheduled task object in the $restoreTask variable. Certifique-se de utilizar os valores user e password.

o código está agora completo. Copiar e executar o código em PowerShell para restaurar a tarefa agendada apagada. A imagem abaixo mostra o resultado esperado após a execução do Código.

Restaurar exclusão de uma tarefa agendada a partir de um backup em XML

Agora, a tarefa agendada é registrado no sistema. A imagem abaixo mostra a tarefa agendada restaurada.

Encontrar restaurado tarefa agendada

Resumo

O recurso Tarefas Agendadas no Windows é uma excelente ferramenta para a definição de tarefas ou trabalhos. Você pode criar as tarefas mais básicas para mais complexas. As configurações e opções são flexíveis.

com o módulo de Tarefas Agendadas PowerShell, a configuração de tarefas programadas usando comandos PowerShell é possível. Este módulo oferece a oportunidade e os meios para criar e implantar tarefas programadas programaticamente nos computadores locais e remotos.

Microsoft não atualizou o módulo ScheduledTasks, e algumas configurações avançadas ainda não são facilmente expostas como cmdlets PowerShell. Um exemplo é criar um gatilho para ” on workstation unlock.”Mas, você pode alcançar essas configurações avançadas usando a classe CIM do escalonador de tarefas existente.

no entanto, o módulo de Tarefas Agendadas PowerShell ainda é uma ferramenta excelente e capaz que você pode adicionar ao seu arsenal PowerShell.

Deixe uma resposta

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