New-ScheduledTaskTrigger
к сожалению, нет способа создания событийных триггеров. Сообщество PS попросило, чтобы это было реализовано.
Мы должны быть в состоянии объединить XML, с которым вы работаете, с кодом, который создает задачи с использованием .NET. Просто замените пользователя, пароль и имя сервиса.
$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)