Windows OS Hub
  • Windows Server
    • Windows Server 2022
    • Windows Server 2019
    • Windows Server 2016
    • Windows Server 2012 R2
    • Windows Server 2012
    • Windows Server 2008 R2
    • SCCM
  • Active Directory
    • Active Directory Domain Services (AD DS)
    • Group Policies
  • Windows Clients
    • Windows 11
    • Windows 10
    • Windows 8
    • Windows 7
    • Windows XP
    • MS Office
    • Outlook
  • Virtualization
    • VMWare
    • Hyper-V
    • KVM
  • PowerShell
  • Exchange
  • Cloud
    • Azure
    • Microsoft 365
    • Office 365
  • Linux
    • CentOS
    • RHEL
    • Ubuntu
  • Home
  • About

Windows OS Hub

  • Windows Server
    • Windows Server 2022
    • Windows Server 2019
    • Windows Server 2016
    • Windows Server 2012 R2
    • Windows Server 2012
    • Windows Server 2008 R2
    • SCCM
  • Active Directory
    • Active Directory Domain Services (AD DS)
    • Group Policies
  • Windows Clients
    • Windows 11
    • Windows 10
    • Windows 8
    • Windows 7
    • Windows XP
    • MS Office
    • Outlook
  • Virtualization
    • VMWare
    • Hyper-V
    • KVM
  • PowerShell
  • Exchange
  • Cloud
    • Azure
    • Microsoft 365
    • Office 365
  • Linux
    • CentOS
    • RHEL
    • Ubuntu

 Windows OS Hub / PowerShell / How to Create and Manage Scheduled Tasks with PowerShell?

April 7, 2021 PowerShellWindows Server 2016

How to Create and Manage Scheduled Tasks with PowerShell?

Most users and administrators use the taskschd.msc graphical interface console to create and manage scheduled tasks on Windows. However, in various scripts and automated flows, it is much more convenient to use the PowerShell features to create scheduled tasks. In this article, we’ll show how to create and manage Windows Scheduler tasks using PowerShell.

Contents:
  • Managing Scheduled Tasks on Windows via PowerShell
  • Creating Scheduled Task with Windows PowerShell
  • How to View and Run Scheduled Tasks with PowerShell?
  • How to Export and Import Scheduled Tasks via XML Files?

Managing Scheduled Tasks on Windows via PowerShell

The ScheduledTasks PowerShell module is used to manage scheduled tasks on Windows 10/Windows Server 2016. You can list the cmdlets in a module as follows:

Get-Command -Module ScheduledTasks

  • Disable-ScheduledTask
  • Enable-ScheduledTask
  • Export-ScheduledTask
  • Get-ClusteredScheduledTask
  • Get-ScheduledTask
  • Get-ScheduledTaskInfo
  • New-ScheduledTask
  • New-ScheduledTaskAction
  • New-ScheduledTaskPrincipal
  • New-ScheduledTaskSettingsSet
  • New-ScheduledTaskTrigger
  • Register-ClusteredScheduledTask
  • Register-ScheduledTask
  • Set-ClusteredScheduledTask
  • Set-ScheduledTask
  • Start-ScheduledTask
  • Stop-ScheduledTask
  • Unregister-ClusteredScheduledTask
  • Unregister-ScheduledTask

managing Scheduled Tasks via powershell

Hint. Previously, the built-in console tool schtasks.exe was used in Windows to create and manage scheduler jobs.

Creating Scheduled Task with Windows PowerShell

In modern versions of PowerShell (starting with PowerShell 3.0 on Windows Server 2012/Windows 8), you can use the New-ScheduledTaskTrigger and Register-ScheduledTask cmdlets to create scheduled tasks.

Suppose, we need to create a scheduled task that should run during startup (or at a specific time) and execute some PowerShell script or command. Let’s create a scheduled task named StartupScript1. This task should run the PowerShell script file C:\PS\StartupScript.ps1 at 10:00 AM every day. The task will be executed with elevated privileges (checkbox “Run with highest privileges”) under the SYSTEM account.

$Trigger= New-ScheduledTaskTrigger -At 10:00am -Daily
$User= "NT AUTHORITY\SYSTEM"
$Action= New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "C:\PS\StartupScript1.ps1"
Register-ScheduledTask -TaskName "StartupScript1" -Trigger $Trigger -User $User -Action $Action -RunLevel Highest –Force

If the task was created successfully, the status “Ready” appears.

create sheduled task with PowerShell cmdlet Register-ScheduledTask

Your PowerShell script will run on the specified schedule. If you have a PowerShell Execution Policy enabled on your computer that prevents PS1 scripts from executing, you can run a PowerShell script from a scheduled task with the –Bypass parameter.

Use this code when creating a new task:

$Action= New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument “-NoProfile -NoLogo -NonInteractive -ExecutionPolicy Bypass -File C:\PS\StartupScript.ps1"

Tip. If you want the task to run every time during the computer startup, the first command has to be as follows:
$Trigger= New-ScheduledTaskTrigger -AtStartup
If you want to run a task when a user logs on:
$Trigger= New-ScheduledTaskTrigger -AtLogon

Open the taskschd.msc console and make sure you have a new scheduler task in the Task Scheduler Library.

new task appears in the task sheduler console

In Powershell 2.0 (Windows 7, Windows Server 2008 R2), to create a scheduled task from PowerShell you can use the Schedule.Service COM interface (or update the PowerShell version). In this example, we create a scheduled task that will execute the specific file containing PowerShell script during startup. The task is performed with the NT AUTHORITY\SYSTEM privileges.

$TaskName = "NewPsTask"
$TaskDescription = "Running PowerShell script from Task Scheduler"
$TaskCommand = "c:\windows\system32\WindowsPowerShell\v1.0\powershell.exe"
$TaskScript = "C:\PS\StartupScript.ps1"
$TaskArg = "-WindowStyle Hidden -NonInteractive -Executionpolicy unrestricted -file $TaskScript"
$TaskStartTime = [datetime]::Now.AddMinutes(1)
$service = new-object -ComObject("Schedule.Service")
$service.Connect()
$rootFolder = $service.GetFolder("\")
$TaskDefinition = $service.NewTask(0)
$TaskDefinition.RegistrationInfo.Description = "$TaskDescription"
$TaskDefinition.Settings.Enabled = $true
$TaskDefinition.Settings.AllowDemandStart = $true
$triggers = $TaskDefinition.Triggers
#http://msdn.microsoft.com/en-us/library/windows/desktop/aa383915(v=vs.85).aspx
$trigger = $triggers.Create(8)

How to View and Run Scheduled Tasks with PowerShell?

You can list all active scheduled tasks on Windows with the command:

Get-ScheduledTask -TaskPath | ? state -ne Disabled

To get information about a specific task:

Get-ScheduledTask CheckServiceState| Get-ScheduledTaskInfo

LastRunTime : 4/7/2021 10:00:00 AM
LastTaskResult : 267011
NextRunTime : 4/8/2021 10:00:00 AM
NumberOfMissedRuns : 0
TaskName : CheckServiceState
TaskPath : \
PSComputerName :

Get-ScheduledTaskInfo powershell

You can disable this task:

Get-ScheduledTask CheckServiceState | Disable-ScheduledTask

To enable a task:

Get-ScheduledTask CheckServiceState | Enable-ScheduledTask

To run the task immediately (without waiting for the schedule), run:

Start-ScheduledTask CheckServiceState

disable/enable/start sheduled task manually

To completely remove a task from the Task Scheduler library:

Unregister-ScheduledTask -TaskName CheckServiceState

If you need to change the username from which the task is launched and, for example, the compatibility mode, use the Set-ScheduledTask cmdlet:

$task_user = New-ScheduledTaskPrincipal -UserId woshub\j.abrams' -RunLevel Highest
$task_settings = New-ScheduledTaskSettingsSet -Compatibility 'Win8'
Set-ScheduledTask -TaskName CheckServiceState_PS -Principal $task_user -Settings $task_settings

If you receive the error “Set-ScheduledTask: No mapping between account names and security IDs was done” check that you provide the correct username.

Set-ScheduledTask: No mapping between account names and security IDs was done

How to Export and Import Scheduled Tasks via XML Files?

PowerShell allows you to export the current settings of any scheduled task into a text XML file. So you can export the parameters of any task and deploy a task to other computers. The task may be exported both from the Task Scheduler GUI and from PowerShell console.

Here is the command to export the task with the name StartupScript to the file StartupScript.xml:

Export-ScheduledTask StartupScript | out-file c:\tmp\StartupScript.xml

Export-ScheduledTask - xml task

The Export-ScheduledTask cmdlet is not available in PowerShell 2.0, so in Windows 7 / Windows Server 2008 R2 it’s better to use the built-in tool schtasks to export the task settings and redirect the result into a text file:

schtasks /query /tn "NewPsTask" /xml >> "c:\tmp\NewPsTask.xml"

After the scheduled task settings are exported to the XML file, it can be imported to any network computer using the GUI, SchTasks.exe or PowerShell.

Register-ScheduledTask cmdlet can help you to import task settings from an XML file and register it:
Register-ScheduledTask -Xml (Get-Content “\\mun-fs01\public\NewPsTask.xml” | out-string) -TaskName "NewPsTask"

In PowerShell 2.0 (Windows 7/Server 2008 R2), it is easier to import a task using the schtasks tool. The first command creates a new task. The second will run it immediately (without waiting for the trigger to activate it).

schtasks /create /tn "NewPsTask" /xml "\\Srv1\public\NewPsTask.xml" /ru corp\skrutapal /rp Pa$$w0rd
schtasks /Run /TN "NewPsTask"

Please, note that this example uses the credentials of the account that is used to run the task. If the credentials are not specified, because they are not stored in the job, they will be requested when importing.

0 comment
1
Facebook Twitter Google + Pinterest
previous post
Updating Windows VM Templates on VMWare with PowerShell
next post
Enable Windows Lock Screen after Inactivity via GPO

Related Reading

Create Organizational Units (OU) Structure in Active Directory...

May 17, 2022

Windows Security Won’t Open or Shows a Blank...

May 17, 2022

How to Manually Install Windows Updates from CAB...

May 16, 2022

RDS and RemoteApp Performance Issues on Windows Server...

May 16, 2022

Deploying Software (MSI Packages) Using Group Policy

May 12, 2022

Leave a Comment Cancel Reply

Categories

  • Active Directory
  • Group Policies
  • Exchange Server
  • Microsoft 365
  • Azure
  • Windows 11
  • Windows 10
  • Windows 7
  • Windows Server 2019
  • Windows Server 2016
  • Windows Server 2012 R2
  • PowerShell
  • VMWare
  • Hyper-V
  • MS Office

Recent Posts

  • Create Organizational Units (OU) Structure in Active Directory with PowerShell

    May 17, 2022
  • Windows Security Won’t Open or Shows a Blank Screen on Windows 10/ 11

    May 17, 2022
  • How to Manually Install Windows Updates from CAB and MSU Files?

    May 16, 2022
  • RDS and RemoteApp Performance Issues on Windows Server 2019/2016

    May 16, 2022
  • Deploying Software (MSI Packages) Using Group Policy

    May 12, 2022
  • Updating VMware ESXi Host from the Command Line

    May 11, 2022
  • Enable or Disable MFA for Users in Azure/Microsoft 365

    April 27, 2022
  • Fix: You’ll Need a New App to Open This Windows Defender Link

    April 27, 2022
  • How to Reset an Active Directory User Password with PowerShell and ADUC?

    April 27, 2022
  • How to Completely Uninstall Previous Versions of Office with Removal Scripts?

    April 26, 2022

Follow us

woshub.com

ad

  • Facebook
  • Twitter
  • RSS
Popular Posts
  • Installing RSAT Administration Tools on Windows 10 and 11
  • Get-ADUser: Find Active Directory User Info with PowerShell
  • How to Hide Installed Programs in Windows 10 and 11?
  • Manage Windows Updates with PSWindowsUpdate PowerShell Module
  • How to Find the Source of Account Lockouts in Active Directory domain?
  • Tracking and Analyzing Remote Desktop Connection Logs in Windows
  • How to Create a UEFI Bootable USB Drive to Install Windows 10 or 7?
Footer Logo

@2014 - 2018 - Windows OS Hub. All about operating systems for sysadmins


Back To Top