Create an object that contains advanced options for a scheduled job.
Syntax
New-ScheduledJobOption [-ContinueIfGoingOnBattery] [-DoNotAllowDemandStart] [-HideInTaskScheduler]
[-IdleDuration TimeSpan] [-IdleTimeout TimeSpan] [-MultipleInstancePolicy TaskMultipleInstancePolicy]
[-RequireNetwork] [-RestartOnIdleResume] [-RunElevated] [-StartIfIdle]
[-StartIfOnBattery] [-StopIfGoingOffIdle] [-WakeToRun] [CommonParameters]
Key
-ContinueIfGoingOnBattery
Do not stop the scheduled job if the computer switches to battery power (disconnects from AC power) while the
job is running. By default, scheduled jobs stop when the computer disconnects from AC power.
The ContinueIfGoingOnBattery parameter sets the value of the StopIfGoingOnBatteries property of scheduled jobs
to True.
-DoNotAllowDemandStart
Start the job only when it is triggered. Users cannot start the job manually, such as by using the Run feature
in Task Scheduler.
This parameter only affects Task Scheduler. It does not prevents users from using the Start-Job cmdlet to
start the job.
The DoNotAllowDemandStart parameter sets the value of the DoNotAllowDemandStart property of scheduled jobs to
True.
-HideInTaskScheduler
Do not display the job in Task Scheduler. This value affects only the computer on which the job runs. By
default, scheduled tasks appear in Task Scheduler.
Even if a task is hidden, users can display the task by selecting the "Show hidden tasks" view option in Task
Scheduler.
The HideInTaskScheduler parameter sets the value of the ShowInTaskScheduler property of scheduled jobs to
False.
-IdleDuration TimeSpan
Specifies how long the computer must be idle before the job starts. The default value is 10 minutes. If the
computer is not idle for the specified duration before the value of IdleTimeout expires, the scheduled job
does not run until the next scheduled time, if any.
Enter a timespan object, such as one generated by the New-TimeSpan cmdlet, or enter a value in
hours:minutes:seconds format that is automatically converted to a timespan object
To enable this value, use the StartIfIdle parameter. By default, the StartIfNotIdle property of scheduled jobs
is set to True and Windows PowerShell ignores the IdleDuration and IdleTimeout values.
-IdleTimeout TimeSpan
Specifies how long the computer must be idle before the job starts. The default value is 10 minutes. If the
computer is not idle for the specified duration before the value of IdleTimeout expires, the scheduled job
does not run until the next scheduled time, if any.
Enter a timespan object, such as one generated by the New-TimeSpan cmdlet, or enter a value in
hours:minutes:seconds format that is automatically converted to a timespan object.
To enable this value, use the StartIfIdle parameter. By default, the StartIfNotIdle property of scheduled jobs
is set to True and Windows PowerShell ignores the IdleDuration and IdleTimeout values.
-InputObject ScheduledJobOptions
Specifies the job options. Enter a variable that contains ScheduledJobOptions objects or type a command or
expression that gets ScheduledJobOptions objects, such as a Get-ScheduledJobOption command. You can also pipe
a ScheduledJobOptions object to Set-ScheduledJobOption.
-MultipleInstancePolicy TaskMultipleInstancePolicy
Determines how the system responds to a request to start an instance of a scheduled job while another instance
of the job is running. The default value is IgnoreNew.
Valid values are:
-- IgnoreNew: The new job instance is ignored. This is the default value.
-- Parallel: The new job instance starts immediately.
-- Queue: The new job instance starts as soon as the current instance completes.
-- StopExisting: The current instance of the job stop and the new instance starts.
To run the job, all conditions for the job schedule must be met. For example, if the conditions that are set
by the RequireNetwork, IdleDuration and IdleTimeout parameters are not satisfied, the job instance is not
started, regardless of the value of this parameter.
-RequireNetwork
Runs the scheduled job only when network connections are available.
If you specify this parameter and the network is not available at the scheduled start time, the job does not
run until the next scheduled start time, if any.
The RequireNetwork parameter sets the value of the RunWithoutNetwork property of scheduled jobs to False.
-RestartOnIdleResume
Restarts a scheduled job when the computer becomes idle. This parameter works with the StopIfGoingOffIdle
parameter, which suspends a running scheduled job if the computer becomes active (leaves the idle state).
The RestartOnIdleResume parameter sets the value of the RestartOnIdleResume property of scheduled jobs to True.
-RunElevated
Runs the scheduled job with the permissions of a member of the Administrators group on the computer on which
the job runs.
To enable a scheduled job to run with Administrator permissions, use the Credential parameter of
Register-ScheduledJob to provide explicit credential for the job.
The RunElevated parameter sets the value of the RunElevated property of scheduled jobs to True.
-StartIfIdle
Starts the scheduled job if the computer has been idle for the time specified by the IdleDuration parameter
before the time specified by the IdleTimeout parameter expires.
By default, the IdleDuration and IdleTimeout parameters are ignored and the job starts at the scheduled start
time even if the computer is busy.
If you specify this parameter and the computer is busy (not idle) at the scheduled start time, the job does
not run until the next scheduled start time, if any.
The StartIfIdle parameter sets the value of the StartIfNotIdle property of scheduled jobs to False.
-StartIfOnBattery
Starts the scheduled job even if the computer is running on batteries at the scheduled start time. The default
value is False.
The StartIfOnBattery parameter sets the value of the StartIfOnBatteries property of scheduled jobs to True.
-StopIfGoingOffIdle
Suspends a running scheduled job if the computer becomes active (not idle) while the job is running.
By default, a scheduled job that is suspended when the computer becomes active resumes when the computer
becomes idle again. To change this default behavior, use the RestartOnIdleResume parameter.
The StopIfGoingOffIdle parameter sets the value of the StopIfGoingOffIdle property of scheduled jobs to True.
-WakeToRun
Wakes the computer from a Hibernate or Sleep state at the scheduled start time so it can run the job. By
default, if the computer is in a Hibernate or Sleep state at the scheduled start time, the job does not run.
The WakeToRun parameter sets the value of the WakeToRun property of scheduled jobs to True.
CommonParameters:
-Verbose, -Debug, -ErrorAction, -ErrorVariable, -WarningAction, -WarningVariable,
-OutBuffer -PipelineVariable, -OutVariable.
Use the ScheduledJobOptions object that New-ScheduledJobOption returns to set job options for a new or existing scheduled job. Alternatively, you can set job options by using the Get-ScheduledJobOption cmdlet to get the job options of an existing scheduled job or by using a hash table value to represent the job options.
Without parameters, New-ScheduledJobOption generates an object that contains the default values for all of the options. Because all of the properties except for the JobDefinition property can be edited, you can use the resulting object as a template, and create standard option objects for your enterprise.
When creating scheduled jobs and setting scheduled job options, review the default values of all scheduled job options. Scheduled jobs run only when all conditions set for their execution are satisfied.
The scheduled job options determine how the job runs when it is started by Task Scheduler.
These options do not apply when you use Start-Job to start a scheduled job.
Examples
Create a scheduled job option object with default values:
PS C:\> New-ScheduledJobOption
StartIfOnBatteries : False
StopIfGoingOnBatteries : True
WakeToRun : False
StartIfNotIdle : True
StopIfGoingOffIdle : False
RestartOnIdleResume : False
IdleDuration : 00:10:00
IdleTimeout : 01:00:00
ShowInTaskScheduler : True
RunElevated : False
RunWithoutNetwork : True
DoNotAllowDemandStart : False
MultipleInstancePolicy : Ignore
NewJobDefinition :
Create a scheduled job option object with custom values:
PS C:\> New-ScheduledJobOption -RequireNetwork -StartIfOnBattery
Create a ScheduledJobOptions object with the RunElevated parameter:
PS C:\> $RunAsAdmin = New-ScheduledJobOption -RunElevated
Create a new scheduled job using the $RunAsAdmin variable for the ScheduledJobOption parameter:
PS C:\> Register-ScheduledJob -Name Backup -FilePath D:\Scripts\Backup.ps1 -Trigger $Mondays -ScheduledJobOption $RunAsAdmin
“To achieve great things, two things are needed; a plan, and not quite enough time” ~ Leonard Bernstein
Related PowerShell Cmdlets:
Scheduler cmdlets - Get/Set scheduled jobs.
Get-ScheduledJobOption - Get the options of scheduled job.
Set-ScheduledJobOption - Change the options of a scheduled job.