Powershell v4. Create remote task scheduler task set to expire and delete

后端 未结 3 1748
鱼传尺愫
鱼传尺愫 2020-12-22 02:05

I am trying to create a task that essentially reboots the server but the task is put there by a remote server running a check to see if a reboot is needed. I am stuck trying

3条回答
  •  不思量自难忘°
    2020-12-22 02:47

    With some help from Craig Duff, here is how you can create a task that is deleted after being run without the compatibility flag and using the PS4.0 cmdlets:

    $run = (Get-Date).AddMinutes(2) # Two minutes from now
    Register-ScheduledTask -TaskName "MyTask"  -User "Domain\User" -InputObject (
      (
        New-ScheduledTask -Action (
          New-ScheduledTaskAction -Execute "C:\path\to\your.exe" -Argument (
            "many" + 
            "arguments " +
            """with quotes"" "
          )
        ) -Trigger (
          New-ScheduledTaskTrigger -Once -At ($run.TimeOfDay.ToString("hh\:mm")) # As a "TimeOfDay" to get 24Hr format
        ) -Settings (
          New-ScheduledTaskSettingsSet  -DeleteExpiredTaskAfter 00:00:01 # Delete one second after trigger expires
        ) 
      ) | %{ $_.Triggers[0].EndBoundary = $run.AddMinutes(60).ToString('s') ; $_ } # Run through a pipe to set the end boundary of the trigger
    )
    

    The thing is that the trigger must have an EndBoundary defined so that the task can be deleted. The New-ScheduledTaskTrigger cmdlet doesn't have a parameter to define it. The trick is then to create the task and register it in two different steps, with a step in between to define the End Boundary of the trigger. Obviously if your task has more than one trigger, you would need to set the End Boundary for each.

    This specific example creates a task that will run c:\path\to\your.exe once called MyTask two minutes into the future, running with credentials Domain\User. The trigger will expire an hour after the execution start (just so someone could verify if it was run from the scheduled tasks window, instead of browsing through the windows logs), and the task will be deleted one second after that.

提交回复
热议问题