Cria uma tarefa agendada para ser executada depois que um serviço é iniciado usando o Powershell?

0

Eu olhei para esta pergunta onde é mostrado como criar um gatilho para ser executado após o início de um serviço, mas estou com dificuldades para descobrir como fazer isso por meio do Powershell.

New-ScheduledTaskTrigger parece suportar apenas recursos baseados em tempo aciona, mas não baseado em um evento, como um serviço iniciando. Quaisquer ponteiros?

    
por Nuno Linhares 15.12.2017 / 09:21

1 resposta

1

New-ScheduledTaskTrigger infelizmente não tem como criar gatilhos acionados por eventos. A comunidade PS solicitou que que isso seja implementado .

Devemos ser capazes de combinar o XML com o qual você está trabalhando com o código que cria tarefas usando o .NET . Basta substituir o usuário, o passe e o nome do serviço.

$taskRunAsuser = "domain\user"
$taskRunAsUserPwd = "password"
$Service = new-object -ComObject ("Schedule.Service")
$Service.Connect($env:computername)
$RootFolder = $Service.GetFolder("\")
$TaskDefinition = $Service.NewTask(0)
$settings = $taskDefinition.Settings
$settings.Enabled = $true
$settings.StartWhenAvailable = $true
$settings.Hidden = $false
$Triggers = $TaskDefinition.Triggers
$Trigger = $Triggers.Create(0)
#$Trigger.Id = '4800'
$Trigger.Subscription = "<QueryList> 
<Query Id='0'> 
   <Select Path='System'> 
      *[EventData[Data[@Name='param1'] and (Data='YOUR SERVICE NAME')]] 
      and
      *[EventData[Data[@Name='param2'] and (Data='running')]] 
    </Select> 
</Query> 
</QueryList>"
$Trigger.Enabled = $true
$Action = $TaskDefinition.Actions.Create(0)
$Action.Path = 'ping.exe'
$Action.Arguments = '8.8.8.8 > C:\ping.log'
$rootFolder.RegisterTaskDefinition('Test',$TaskDefinition,6,$taskRunAsUser,$taskRunAsUserPwd,1)
    
por 15.12.2017 / 16:33