use Win32::TaskScheduler; sub create_schedule($$$$$$$$$$$) { my( $mins, $hrs, $mon, $tue, $wed, $thu, $fri, $sat, $sun, $target_machine, $task_name ) = @_; my $days; my $scheduler = Win32::TaskScheduler->New() or die "Win32::TaskScheduler->New() failed: $! $^E"; my %trig=( 'BeginYear' => 2005, 'BeginMonth' => 03, 'BeginDay' => 20, 'StartHour' => $hrs, 'StartMinute' => $mins, 'TriggerType' => $scheduler -> TASK_TIME_TRIGGER_MONTHLYDOW, 'Type'=>{ 'WhichWeek' => $scheduler->TASK_FIRST_WEEK | $scheduler->TASK_SECOND_WEEK | $scheduler->TASK_THIRD_WEEK | $scheduler->TASK_LAST_WEEK, 'DaysOfTheWeek' => $scheduler->TASK_TUESDAY, 'Months' => $scheduler->TASK_JANUARY | $scheduler->TASK_FEBRUARY | $scheduler->TASK_MARCH | $scheduler->TASK_APRIL | $scheduler->TASK_MAY | $scheduler->TASK_JUNE | $scheduler->TASK_JULY | $scheduler->TASK_AUGUST | $scheduler->TASK_SEPTEMBER | $scheduler->TASK_OCTOBER | $scheduler->TASK_NOVEMBER | $scheduler->TASK_DECEMBER }, ); $scheduler->SetTargetComputer("\\\\MYHOST") or die "Error: $! $^E"; foreach my $k (keys %trig) { print "$k=" . $trig{$k} . "\n"; } $scheduler->NewWorkItem( $task_name,\%trig ); $scheduler->SetApplicationName ("timezone.pm") or die "Error: $! $^E"; $scheduler->Save() or die "Error: $! $^E"; $scheduler = Win32::TaskScheduler->New() or die "Error: $! $^E"; $scheduler->Activate($task_name) or die "Error: $! $^E";; }