Skip to content

Instantly share code, notes, and snippets.

@jeremysimmons
Created January 31, 2018 22:38
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jeremysimmons/0d81b632adcd5544a7ab56facc43e7ec to your computer and use it in GitHub Desktop.
Save jeremysimmons/0d81b632adcd5544a7ab56facc43e7ec to your computer and use it in GitHub Desktop.
show the LastRunTime of scheduled task
<#
.Synopsis
Get the list of scheduled Tasks from Windows 7 or Windows 2008 computers
.Description
This script displays all the scheduled tasks available in a windows 7 or windows 2008 computer.
.Parameter ComputerName
Computer Name(s) from which you want to get the scheduled tasks information. If this
parameter is not used, the the script gets the scheduled tasks list from local computer.
.Parameter TaskName
Name of the scheduled task that you want to query. This is a optional parameter.
.Example 1
Get-ScheduledTask.ps1 -ComputerName Comp1, Comp2
Get the scheduled tasks information from listed computers.
.Example 2
Get-ScheduledTask.ps1 -ComputerName Comp1 -TaskName "Calibration Loader"
Get the details of given task from Comp1.
.Notes
NAME: Get-ScheduledTask.ps1
AUTHOR: Sitaram Pamarthi
WEBSITE: http://techibee.com
#>
[cmdletbinding()]
param (
[parameter(ValueFromPipeline=$true,ValueFromPipelineByPropertyName=$true)]
[string[]] $ComputerName = $env:computername,
[string] $TaskName
)
#function to get all scheduled task folder details.
function Get-TaskSubFolders {
[cmdletbinding()]
param (
$FolderRef
)
$ArrFolders = @()
$folders = $folderRef.getfolders(1)
if($folders) {
foreach ($folder in $folders) {
$ArrFolders = $ArrFolders + $folder
if($folder.getfolders(1)) {
Get-TaskSubFolders -FolderRef $folder
}
}
}
return $ArrFolders
}
#MAIN
foreach ($Computer in $ComputerName) {
$SchService = New-Object -ComObject Schedule.Service
$SchService.Connect()
$Rootfolder = $SchService.GetFolder("\")
$folders = Get-Tasksubfolders -FolderRef $RootFolder
foreach($Folder in $folders) {
$Tasks = $folder.gettasks(1)
foreach($Task in $Tasks) {
$OutputObj = New-Object -TypeName PSobject
$OutputObj | Add-Member -MemberType NoteProperty -Name ComputerName -Value $Computer
$OutputObj | Add-Member -MemberType NoteProperty -Name TaskName -Value $Task.Name
$OutputObj | Add-Member -MemberType NoteProperty -Name TaskFolder -Value $Folder.path
$OutputObj | Add-Member -MemberType NoteProperty -Name IsEnabled -Value $task.enabled
$OutputObj | Add-Member -MemberType NoteProperty -Name LastRunTime -Value $task.LastRunTime
$OutputObj | Add-Member -MemberType NoteProperty -Name NextRunTime -Value $task.NextRunTime
if($TaskName) {
if($Task.Name -eq $TaskName) {
$OutputObj
}
} else {
$OutputObj
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment