Powershell을 사용하여 서비스를 시작한 후 실행할 예약 된 작업을 만드시겠습니까?


0

서비스가 시작된 후 실행할 트리거를 만드는 방법을 보여주는 이 질문을 보았지만 Powershell을 통해이를 수행하는 방법을 알아 내려고 노력하고 있습니다.

New-ScheduledTaskTrigger 는 시간 기반 트리거 만 지원하는 것으로 보이지만 서비스 시작과 같은 이벤트를 기반으로하지는 않습니다. 어떤 포인터?

답변:


1

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)

놀라운 예, 정말 감사합니다!
Nuno Linhares

나를 위해 작동하지 않습니다, 나는 구문 및 런타임 오류가 발생했습니다
메디 Dehghani에게
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.