functions/Get-DbaRunningJob.ps1
FUNCTION Get-DbaRunningJob { <# .SYNOPSIS Returns all non idle agent jobs running on the server. .DESCRIPTION This function returns agent jobs that active on the SQL Server instance when calling the command. The information is gathered the SMO JobServer.jobs and be returned either in detailed or standard format .PARAMETER SqlInstance SQLServer name or SMO object representing the SQL Server to connect to. This can be a collection and receive pipeline input .PARAMETER SqlCredential PSCredential object to connect as. If not specified, current Windows login will be used. .PARAMETER Silent Replaces user friendly yellow warnings with bloody red exceptions of doom! Use this if you want the function to throw terminating errors you want to catch. .NOTES Author: Stephen Bennett, https://sqlnotesfromtheunderground.wordpress.com/ Website: https://dbatools.io Copyright: (C) Chrissy LeMaire, clemaire@gmail.com License: GNU GPL v3 https://opensource.org/licenses/GPL-3.0 .LINK https://dbatools.io/Get-DbaRunningJob .EXAMPLE Get-DbaRunningJob -SqlInstance localhost Returns any active jobs on the localhost .EXAMPLE Get-DbaRunningJob -SqlInstance localhost -Detailed Returns a detailed output of any active jobs on the localhost .EXAMPLE 'localhost','localhost\namedinstance' | Get-DbaRunningJob Returns all active jobs on multiple instances piped into the function #> [CmdletBinding()] Param ( [parameter(Position = 0, Mandatory = $true, ValueFromPipeline = $True)] [Alias("ServerInstance", "SqlServer", "SqlServers")] [DbaInstanceParameter[]]$SqlInstance, [Alias("Credential")] [PSCredential]$SqlCredential, [switch]$Silent ) process { foreach ($instance in $SqlInstance) { try { $server = Connect-SqlInstance -SqlInstance $instance -SqlCredential $sqlcredential } catch { Stop-Function -Message "Failed to connect to: $Server" -Target $server -ErrorRecord $_ -Continue } $jobs = $server.JobServer.jobs | Where-Object { $_.CurrentRunStatus -ne 'Idle' } IF (!$jobs) { Write-Message -Level Verbose -Message "No Jobs are currently running on: $Server" } else { foreach ($job in $jobs) { [pscustomobject]@{ ComputerName = $server.NetName InstanceName = $server.ServiceName SqlInstance = $server.DomainInstanceName Name = $job.name Category = $job.Category CurrentRunStatus = $job.CurrentRunStatus CurrentRunStep = $job.CurrentRunStep HasSchedule = $job.HasSchedule LastRunDate = $job.LastRunDate LastRunOutcome = $job.LastRunOutcome JobStep = $job.JobSteps } } } } } } |