# Load SMO assembly
[void][System.Reflection.Assembly]::LoadWithPartialName( 'Microsoft.SqlServer.SMO' )
# function to get failed job list
function Get-FailedJobs ($server)
{
foreach ($s in $server)
{
$srv = New-Object "Microsoft.SqlServer.Management.Smo.Server" $s
$jobList = $srv.JobServer.Jobs |
Where {$_.LastRunOutCome -eq "Failed" -AND $_.NextRunDate -gt (Get-Date)} |
Select Name, OwnerLoginName, LastRunDate, NextRunDate
if($jobList)
{
Write-Host "Server Name: $s" -Foreground Red
$jobList
}
}
} #end function Get-FailedJobs
You would call this like:
# for default instance
Get-FailedJobs MyServer
# for named instance
Get-FailedJobs MyServer\InstanceName
# to get back results on multiple servers
$serverList = "MyServer1","MyServer2","MyServer\Instance1","MyServer\Instance2"
$serverList | ForEach {Get-FailedJobs $_}
10 People are following this question.