ytjPerl has asked for the wisdom of the Perl Monks concerning the following question:

Hi folks, I created a task in windows task scheduler which using a perl script as action program. In my script I have an output file, but when this task has been run by scheduler, there is no output. Is there anything I miss? should I configure anything else for it? Thanks.
  • Comment on using perl script to schedule windows task

Replies are listed 'Best First'.
Re: using perl script to schedule windows task
by Corion (Patriarch) on Aug 04, 2017 at 06:25 UTC

    Without seeing any code all I can do is guess.

    My guess is that you are opening your logfile with a relative path name, like:

    open my $log_fh, './log/mylogfile.log' or die $!;

    But when your task runs, the current directory is not what you think it is.

    Alternatively, you are running your task under the SYSTEM account and try to wite to a network drive. The local account is not allowed to write to network drives.

      You are right. I just realized that, My inputfile and outputfile path both like /xx/xx.log, but Windows does not recognize this path. How I could resolve it? my code is
      #!perl use strict; use autodie; use Win32::Service qw'GetServices GetStatus StartService'; use POSIX; my @state_name = qw( UNKNOWN Stopped START_PENDING STOP_PENDING Started CONTINUE_PENDING PAUSE_PENDING PAUSED ERROR ); my $date = strftime("%Y-%m-%d", localtime); my ($shortname, %status, $state_no); my $filename = '/Users/Documents/Traning/Perl/XiServiceList.txt'; open FILE, '<', $filename;# autodie my $hostname = <FILE>; chomp $hostname; open MYFILE, ">>", "/Users/Documents/Traning/dailycheck\_$date\.log"; print MYFILE "Checking Services available for '$hostname'\n"; my %available=(); GetServices($hostname,\%available) or die "$!"; # add short names $available{$_} = $_ for values %available; print MYFILE "Checking services in list\n";
      I tried to modify the path like c\:/Users/Documents/Traning/dailycheck\_$date\.log, it does not work on command, I have not tested in windows scheduler. Thanks!
        my $path = 'C:/Users/Documents/Traning'; my $filename = $path.'/Perl/XiServiceList.txt'; my $logfile = $path."/dailycheck_$date.log"; . . open MYFILE, ">>", $logfile;

        Note : Is it not c:/users/username/documents/Traning?

        poj
Re: using perl script to schedule windows task
by thanos1983 (Parson) on Aug 03, 2017 at 18:43 UTC

    Hello ytjPerl,

    We need to see you code. What you have tried? Did you try to trigger it manually, is it working? If so did you try to trigger it vua the scheduler is not working?

    Give us sample to play around.

    Looking forward to your reply, BR.

    Seeking for Perl wisdom...on the process of learning...not there...yet!
      I wrote a script to check service status one time and output it into file. Now I need it to repeat checking interval, so I am trying to use windows scheduler to schedule this task running of my choice. But I did not get any output from it.

        Hello again ytjPerl,

        The only way to know what you mean, is to see sample of your code. We can not help you differently. Or at least I can not help you maybe another monk could.

        Looking forward to your update, BR.

        Seeking for Perl wisdom...on the process of learning...not there...yet!