May 17, 2026, 11:40 PM
This commit is contained in:
@@ -0,0 +1,86 @@
|
||||
$envCountry = 'CH'
|
||||
#import Country settings
|
||||
. .\..\.env\Import-EnvironmentSettings.ps1 -envCountry $envCountry
|
||||
|
||||
|
||||
$svcPassword = ConvertTo-SecureString -String $ADPassword -AsPlainText -Force #Muszę to zmienić ponieważ nie jest bezpiecznie trzymać te informacje w pliku płaskim
|
||||
$ADCredential = New-Object System.Management.Automation.PSCredential("$ActiveDirectoryDomain\$ADAccount", $svcPassword)
|
||||
|
||||
function Get-Instance {
|
||||
|
||||
foreach ($instance in $servers) {
|
||||
if($instance[4]) {
|
||||
[array]$sqlinstances += $instance[1] + '\' + $instance[4]
|
||||
} else {
|
||||
[array]$sqlinstances += $instance[1]
|
||||
}
|
||||
}
|
||||
if ($null -ne $sqlinstances) {
|
||||
return [array]$sqlinstances
|
||||
}
|
||||
if ($sqlinstances.Length -eq 0) {
|
||||
Write-PSFMessage -Level Warning -Message "You must specify a list of servers"
|
||||
return
|
||||
}
|
||||
else {
|
||||
[array]$sqlinstances
|
||||
}
|
||||
|
||||
}
|
||||
@(Get-Instance).ForEach{
|
||||
$instance = $psitem
|
||||
try {
|
||||
$InstanceSMO = Connect-DbaInstance -SqlInstance $instance -SqlCredential $ADCredential -ErrorAction SilentlyContinue -ErrorVariable errorvar
|
||||
} catch {
|
||||
|
||||
$NotContactable += $instance
|
||||
}
|
||||
if ($NotContactable -contains $instance) {
|
||||
Context "Checking for failed enabled jobs on $instance" {
|
||||
It "Can't Connect to $instance" {
|
||||
$false | Should -BeTrue -Because 'The instance should be available to be connected to!'
|
||||
}
|
||||
}
|
||||
}
|
||||
if ($NotContactable -notcontains $instance) {
|
||||
if ($null -eq $InstanceSMO.version) {
|
||||
$NotContactable += $instance
|
||||
} elseif (($InstanceSMO).Edition -like 'Express Edition*') { }
|
||||
else {
|
||||
BeforeAll {
|
||||
|
||||
}
|
||||
Describe "Failed Jobs" -Tags FailedJob {
|
||||
$maxdays = 100
|
||||
$startdate = (Get-Date).AddDays( - $maxdays)
|
||||
$excludecancelled = $true
|
||||
Context "Checking for failed enabled jobs since $startdate on $instance -> " {
|
||||
@(Get-DbaAgentJob -SqlInstance $instance -SqlCredential $ADCredential | Where-Object Category -eq "Database Maintenance" ).ForEach{
|
||||
|
||||
if ($_.LastRunOutcome -eq 'Unknown') {
|
||||
It -Skip "1. We chose to skip this as $psitem's last run outcome is unknown on $($_.SqlInstance)" {
|
||||
$_.LastRunOutcome | Should -Be 'Succeeded' -Because 'All Agent Jobs should have succeed this one is unknown - you need to investigate the failed jobs'
|
||||
}
|
||||
} elseif (($_.LastRunOutcome -eq 'Cancelled') -and ($excludecancelled -eq $true)) {
|
||||
It -Skip "2. We chose to skip this as $psitem's last run outcome is cancelled on $($_.SqlInstance)" {
|
||||
$_.LastRunOutcome | Should -Be 'Succeeded' -Because 'All Agent Jobs should have succeed this one is unknown - you need to investigate the failed jobs'
|
||||
}
|
||||
} elseif ($_.LastRunOutcome -eq 'Succeeded'){
|
||||
# $a = $_.LastRunOutcome
|
||||
It "$_.LastRunOutcome's last run outcome is $($_.LastRunOutcome) on $($_.SqlInstance)" {
|
||||
$a = 'Succeeded'
|
||||
$a | Should -Be 'Succeeded'
|
||||
}
|
||||
} else {
|
||||
It "$_.LastRunOutcome's last run outcome is $($_.LastRunOutcome) on $($_.SqlInstance)" {
|
||||
$a = 'Failed'
|
||||
$a | Should -Be 'Succeeded'
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
$NotContactable
|
||||
}
|
||||
Reference in New Issue
Block a user