Assets/Get-OpsJob.ps1

<#
.SYNOPSIS
    Gets the status of Ops Jobs.
.PARAMETER JobName
    Optional specific job name. Supports wildcards.
#>

param (
    [string]$JobName = "*"
)

$Tasks = @(Get-ScheduledTask -TaskName "OpsJob-$JobName" -ErrorAction SilentlyContinue)

$Results = [System.Collections.Generic.List[object]]::new()

foreach ($Task in $Tasks) {
    $Info = $Task | Get-ScheduledTaskInfo -ErrorAction SilentlyContinue

    $Results.Add([PSCustomObject]@{
        # Anchored: an unanchored -replace would also strip the prefix from the
        # middle of a job name such as "Sync-OpsJob-Nightly".
        JobName        = ($Task.TaskName -replace '^OpsJob-', '')
        State          = $Task.State
        LastRunTime    = $Info.LastRunTime
        LastTaskResult = $Info.LastTaskResult
        NextRunTime    = $Info.NextRunTime
    })
}

return $Results.ToArray()