Skip to content

Commit 00b4895

Browse files
DatabaseMailProfile
1 parent a8d4d3a commit 00b4895

File tree

3 files changed

+44
-13
lines changed

3 files changed

+44
-13
lines changed

source/checks/Agentv5.Tests.ps1

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ Describe "DBA Operator" -Tag DbaOperator, Operator, Agent -ForEach $InstancesToT
8484
}
8585
}
8686

87-
Describe "Failsafe operator" -Tag FailsafeOperator, CIS, security, Agent -ForEach $InstancesToTest {
87+
Describe "Failsafe operator" -Tag FailsafeOperator, Operator, Agent -ForEach $InstancesToTest {
8888
$skipFailsafeOperator = ($__dbcconfig | Where-Object { $_.Name -eq 'skip.agent.failsafeoperator' }).Value
8989

9090
Context "Testing failsafe operator exists on <_.Name>" {
@@ -94,18 +94,16 @@ Describe "Failsafe operator" -Tag FailsafeOperator, CIS, security, Agent -ForEac
9494
}
9595
}
9696

97-
#
98-
## Write-PSFMessage -Message "Tags = $Tags" -Level Verbose
99-
#
100-
#Describe "Failsafe Operator" -Tag FailsafeOperator, Operator, Agent -ForEach $InstancesToTest {
101-
# $skipFailsafeOperator = Get-DbcConfigValue skip.agent.failsafeoperator
102-
#
103-
# Context "Testing failsafe operator exists on <_.Name>" {
104-
# It "The Failsafe Operator <_.ExpectedFailSafeOperator> exists on <_.Name>" -Skip:$skipFailsafeOperator -ForEach ($PSItem.AlertSystem | Where-Object ExpectedFailSafeOperator -NE 'null') {
105-
# $PSItem.ExpectedFailSafeOperator | Should -Be $PSItem.ActualFailSafeOperator -Because 'The failsafe operator will ensure that any job failures will be notified to someone if not set explicitly'
106-
# }
107-
# }
108-
#}
97+
Describe "Database Mail Profile" -Tag DatabaseMailProfile, Agent -ForEach $InstancesToTest {
98+
$skipDatabaseMailProfile = ($__dbcconfig | Where-Object { $_.Name -eq 'skip.agent.databasemailprofile' }).Value
99+
100+
Context "Testing Database Mail Profile exists on <_.Name>" {
101+
It "The Database Mail profile <_.DatabaseMailProfile.ExpectedDatabaseMailProfile> exists on <_.Name>" -Skip:$skipDatabaseMailProfile { #-ForEach ($PSItem.DatabaseMailProfile | Where-Object ExpectedDatabaseMailProfile -NE 'null') {
102+
$PSItem.DatabaseMailProfile.ActualDatabaseMailProfile | Should -Be $PSItem.DatabaseMailProfile.ExpectedDatabaseMailProfile -Because 'The database mail profile is required to send emails'
103+
}
104+
}
105+
}
106+
109107

110108
# Describe "Database Mail Profile" -Tags DatabaseMailProfile, $filename {
111109
# if ($NotContactable -contains $psitem) {

source/internal/configurations/configuration.ps1

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -341,10 +341,12 @@ Set-PSFConfig -Module dbachecks -Name skip.agent.servicestate -Validation bool -
341341
Set-PSFConfig -Module dbachecks -Name skip.agent.dbaoperatorname -Validation bool -Value $false -Initialize -Description "Skip the Agent Operator Name check"
342342
Set-PSFConfig -Module dbachecks -Name skip.agent.dbaoperatoremail -Validation bool -Value $false -Initialize -Description "Skip the Agent Operator Email check"
343343
Set-PSFConfig -Module dbachecks -Name skip.agent.failsafeoperator -Validation bool -Value $false -Initialize -Description "Skip the Agent Failsafe Operator check"
344+
Set-PSFConfig -Module dbachecks -Name skip.agent.databasemailprofile -Validation bool -Value $false -Initialize -Description "Skip the Database Mail Profile check"
344345
Set-PSFConfig -Module dbachecks -Name skip.agent.longrunningjobs -Validation bool -Value $false -Initialize -Description "Skip the long running agent jobs check"
345346
Set-PSFConfig -Module dbachecks -Name skip.agent.lastjobruntime -Validation bool -Value $false -Initialize -Description "Skip the last agent job time check"
346347

347348

349+
348350
Set-PSFConfig -Module dbachecks -Name skip.security.containedbautoclose -Validation bool -Value $true -Initialize -Description "Skips the scan for contained databases should have auto close enabled"
349351
Set-PSFConfig -Module dbachecks -Name skip.security.sqlagentproxiesnopublicrole -Validation bool -Value $true -Initialize -Description "Skips the scan for if the public role has access to SQL Agent proxies"
350352
Set-PSFConfig -Module dbachecks -Name skip.security.symmetrickeyencryptionlevel -Validation bool -Value $true -Initialize -Description "Skips the test for if the Symmetric Encryption is at least AES_128 or higher in non-system databases"

source/internal/functions/Get-AllAgentInfo.ps1

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ function Get-AllAgentInfo {
22
# Using the unique tags gather the information required
33
Param($Instance, $Tags)
44

5+
#ToDo: Clean unused SMO classes
56
#clear out the default initialised fields
67
$Instance.SetDefaultInitFields([Microsoft.SqlServer.Management.Smo.Server], $false)
78
$Instance.SetDefaultInitFields([Microsoft.SqlServer.Management.Smo.Database], $false)
@@ -28,6 +29,9 @@ function Get-AllAgentInfo {
2829
# Job Server Alert System Initial fields
2930
$FailsafeInitFields = $Instance.GetDefaultInitFields([Microsoft.SqlServer.Management.Smo.Agent.AlertSystem])
3031

32+
# JobServer Initial fields
33+
$DatabaseMailProfileInitFields = $Instance.GetDefaultInitFields([Microsoft.SqlServer.Management.Smo.Agent.JobServer])
34+
3135
# Database Initial Fields
3236
$DatabaseInitFields = $Instance.GetDefaultInitFields([Microsoft.SqlServer.Management.Smo.Database])
3337

@@ -118,7 +122,33 @@ function Get-AllAgentInfo {
118122
}
119123
}
120124
'DatabaseMailProfile' {
125+
$DatabaseMailProfileInitFields.Add("DatabaseMailProfile") | Out-Null # so we can check failsafe operators
126+
$Instance.SetDefaultInitFields([Microsoft.SqlServer.Management.Smo.Agent.JobServer], $DatabaseMailProfileInitFields)
127+
$DatabaseMailProfileInitFields = $Instance.GetDefaultInitFields([Microsoft.SqlServer.Management.Smo.Agent.JobServer])
128+
129+
$ConfigValues | Add-Member -MemberType NoteProperty -Name 'DatabaseMailProfile' -Value (Get-DbcConfigValue agent.databasemailprofile)
130+
131+
$databaseMailProfile = $ConfigValues.DatabaseMailProfile.ForEach{
132+
[PSCustomObject]@{
133+
InstanceName = $Instance.Name
134+
ExpectedDatabaseMailProfile = $ConfigValues.DatabaseMailProfile
135+
ActualDatabaseMailProfile = $Instance.JobServer.DatabaseMailProfile
136+
}
137+
}
121138

139+
#TODO: Clean up
140+
#$databaseMailProfile = $ConfigValues.DatabaseMailProfile.ForEach{
141+
# [PSCustomObject]@{
142+
# InstanceName = $Instance.Name
143+
# ExpectedDatabaseMailProfile = 'null'
144+
# ActualDatabaseMailProfile = 'null'
145+
# }
146+
#}
147+
#
148+
#Write-PSFMessage -Message "InstanceName : $($databaseMailProfile.InstanceName)" -Level Verbose
149+
#Write-PSFMessage -Message "ExpectedDatabaseMailProfile : $($databaseMailProfile.ExpectedDatabaseMailProfile)" -Level Verbose
150+
#Write-PSFMessage -Message "ActualDatabaseMailProfile : $($databaseMailProfile.ActualDatabaseMailProfile)" -Level Verbose
151+
#Write-PSFMessage -Message "ActualDatabaseMailProfile instance : $($Instance.JobServer.DatabaseMailProfile)" -Level Verbose
122152
}
123153
'AgentMailProfile' {
124154

@@ -159,6 +189,7 @@ function Get-AllAgentInfo {
159189
Agent = @($Agent)
160190
Operator = @($Operator)
161191
FailSafeOperator = @($failsafeOperator)
192+
DatabaseMailProfile = @($databaseMailProfile)
162193
}
163194
return $testInstanceObject
164195
}

0 commit comments

Comments
 (0)