# getTasks gets info on scheduled tasks and prints to stdout as csv. # 10-jan-2006 by fgb # Mod 15-nov-2006, fgb: added getopt to process remote machine. use Getopt::Long; use Win32::TaskScheduler; my $sAppName = 'getTasks'; my $bDebug = 0; my $bHelp = 0; my $sMachine = ""; my $sUncName = ""; my $sVersion = '1.0'; $result = GetOptions('/|-','help|?'=>\$bHelp,'debug'=>\$bDebug,'machine=s'=>\$sMachine); if ($bHelp) { usage(); exit; } $sched = Win32::TaskScheduler->New(); if (length($sMachine) < 1) { $sMachine = Win32::NodeName; } else { if (substr($sMachine,0,1) ne '\\') { $sUncName = "\\\\" . $sMachine; } else { $sUncName = $sMachine; } $sched->SetTargetComputer($sUncName); } @tasks = $sched->Enum(); foreach $task (@tasks) { $sched->Activate($task); $sched->GetExitCode($exCode); $sched->GetStatus($stat); if ($stat != 267008) { next; } # skip jobs not ready to run (disabled?) $user = $sched->GetAccountInformation(); $app = $sched->GetApplicationName(); $n = $sched->GetTriggerCount(); if ($n > 0) { $trigger = $sched->GetTriggerString(0); $trigger =~ s/,.*$//; $trigger =~ s/^At //; } $task =~ s/\.job$//; print "$sMachine,$task,$app,$user,$trigger\n"; } $sched->End(); # coUninitialize # subs: sub usage { print "usage: $sAppName [/machine=]\n"; } __END__