Skip to content

Commit a30f969

Browse files
added Agent Mail Profile
1 parent 00b4895 commit a30f969

File tree

3 files changed

+50
-43
lines changed

3 files changed

+50
-43
lines changed

source/checks/Agentv5.Tests.ps1

Lines changed: 10 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -99,47 +99,22 @@ Describe "Database Mail Profile" -Tag DatabaseMailProfile, Agent -ForEach $Insta
9999

100100
Context "Testing Database Mail Profile exists on <_.Name>" {
101101
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'
102+
$PSItem.DatabaseMailProfile.ActualDatabaseMailProfile | Should -BeIn $PSItem.DatabaseMailProfile.ExpectedDatabaseMailProfile -Because 'The database mail profile is required to send emails'
103103
}
104104
}
105105
}
106106

107+
Describe "Agent Mail Profile" -Tag AgentMailProfile, Agent -ForEach $InstancesToTest {
108+
$skipAgentMailProfile = ($__dbcconfig | Where-Object { $_.Name -eq 'skip.agent.agentmailprofile' }).Value
109+
110+
Context "esting SQL Agent Alert System database mail profile is set on <_.Name>" {
111+
It "The SQL Server Agent Alert System has the mail profile <_.AgentMailProfile.ExpectedAgentMailProfile> enabled as profile on <_.Name>." -Skip:$skipAgentMailProfile { #-ForEach ($PSItem.DatabaseMailProfile | Where-Object ExpectedDatabaseMailProfile -NE 'null') {
112+
$PSItem.AgentMailProfile.ActualAgentMailProfile | Should -Be $PSItem.AgentMailProfile.ExpectedAgentMailProfile -Because 'The SQL Agent Alert System needs an enabled database mail profile to send alert emails'
113+
}
114+
}
115+
}
107116

108-
# Describe "Database Mail Profile" -Tags DatabaseMailProfile, $filename {
109-
# if ($NotContactable -contains $psitem) {
110-
# Context "Testing database mail profile is set on $psitem" {
111-
# It "Can't Connect to $Psitem" {
112-
# $false | Should -BeTrue -Because "The instance should be available to be connected to!"
113-
# }
114-
# }
115-
# }
116-
# else {
117-
# Context "Testing database mail profile is set on $psitem" {
118-
# $databasemailprofile = Get-DbcConfigValue agent.databasemailprofile
119-
# It "The Database Mail profile $databasemailprofile exists on $psitem" {
120-
# ((Get-DbaDbMailProfile -SqlInstance $InstanceSMO).Name -contains $databasemailprofile) | Should -Be $true -Because 'The database mail profile is required to send emails'
121-
# }
122-
# }
123-
# }
124-
# }
125117

126-
# Describe "Agent Mail Profile" -Tags AgentMailProfile, $filename {
127-
# if ($NotContactable -contains $psitem) {
128-
# Context "Testing SQL Agent Alert System database mail profile is set on $psitem" {
129-
# It "Can't Connect to $Psitem" {
130-
# $false | Should -BeTrue -Because "The instance should be available to be connected to!"
131-
# }
132-
# }
133-
# }
134-
# else {
135-
# Context "Testing SQL Agent Alert System database mail profile is set on $psitem" {
136-
# $agentmailprofile = Get-DbcConfigValue agent.databasemailprofile
137-
# It "The SQL Server Agent Alert System should have an enabled database mail profile on $psitem" {
138-
# (Get-DbaAgentServer -SqlInstance $InstanceSMO).DatabaseMailProfile | Should -Be $agentmailprofile -Because 'The SQL Agent Alert System needs an enabled database mail profile to send alert emails'
139-
# }
140-
# }
141-
# }
142-
# }
143118

144119
# Describe "Failed Jobs" -Tags FailedJob, $filename {
145120

source/internal/configurations/configuration.ps1

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -342,6 +342,7 @@ Set-PSFConfig -Module dbachecks -Name skip.agent.dbaoperatorname -Validation boo
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"
344344
Set-PSFConfig -Module dbachecks -Name skip.agent.databasemailprofile -Validation bool -Value $false -Initialize -Description "Skip the Database Mail Profile check"
345+
Set-PSFConfig -Module dbachecks -Name skip.agent.mailprofile -Validation bool -Value $false -Initialize -Description "Skip the SQL Server Agent Mail Profile check"
345346
Set-PSFConfig -Module dbachecks -Name skip.agent.longrunningjobs -Validation bool -Value $false -Initialize -Description "Skip the long running agent jobs check"
346347
Set-PSFConfig -Module dbachecks -Name skip.agent.lastjobruntime -Validation bool -Value $false -Initialize -Description "Skip the last agent job time check"
347348

@@ -377,7 +378,9 @@ Set-PSFConfig -Module dbachecks -Name skip.security.serverprotocol -Validation b
377378
Set-PSFConfig -Module dbachecks -Name agent.dbaoperatorname -Value $null -Initialize -Description "Name of the DBA Operator in SQL Agent"
378379
Set-PSFConfig -Module dbachecks -Name agent.dbaoperatoremail -Value $null -Initialize -Description "Email address of the DBA Operator in SQL Agent"
379380
Set-PSFConfig -Module dbachecks -Name agent.failsafeoperator -Value $null -Initialize -Description "Email address of the Failsafe Operator in SQL Agent"
381+
# TODO: Should this be instance instead of agent?
380382
Set-PSFConfig -Module dbachecks -Name agent.databasemailprofile -Value $null -Initialize -Description "Name of the Database Mail Profile in SQL Agent"
383+
Set-PSFConfig -Module dbachecks -Name agent.mailprofile -Value $null -Initialize -Description "Name of the SQL Server Agent Mail Profile in SQL Agent"
381384
Set-PSFConfig -Module dbachecks -Name agent.validjobowner.name -Value "sa" -Initialize -Description "Agent job owner account should be this user"
382385
Set-PSFConfig -Module dbachecks -Name agent.invalidjobowner.name -Value $null -Initialize -Description "Agent job owner account should not be this user"
383386
Set-PSFConfig -Module dbachecks -Name agent.alert.messageid -Value @('823', '824', '825') -Initialize -Description "Agent alert messageid to validate; https://www.brentozar.com/blitz/configure-sql-server-alerts/"

source/internal/functions/Get-AllAgentInfo.ps1

Lines changed: 37 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,10 @@ function Get-AllAgentInfo {
3030
$FailsafeInitFields = $Instance.GetDefaultInitFields([Microsoft.SqlServer.Management.Smo.Agent.AlertSystem])
3131

3232
# JobServer Initial fields
33-
$DatabaseMailProfileInitFields = $Instance.GetDefaultInitFields([Microsoft.SqlServer.Management.Smo.Agent.JobServer])
33+
$AgentMailProfileInitFields = $Instance.GetDefaultInitFields([Microsoft.SqlServer.Management.Smo.Agent.JobServer])
34+
35+
36+
$DatabaseMailProfileInitFields = $Instance.GetDefaultInitFields([Microsoft.SqlServer.Management.Smo.Mail.MailProfile])
3437

3538
# Database Initial Fields
3639
$DatabaseInitFields = $Instance.GetDefaultInitFields([Microsoft.SqlServer.Management.Smo.Database])
@@ -122,17 +125,45 @@ function Get-AllAgentInfo {
122125
}
123126
}
124127
'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+
$DatabaseMailProfileInitFields.Add("Name") | Out-Null # so we can check failsafe operators
129+
$Instance.SetDefaultInitFields([Microsoft.SqlServer.Management.Smo.Mail.MailProfile], $DatabaseMailProfileInitFields)
130+
$DatabaseMailProfileInitFields = $Instance.GetDefaultInitFields([Microsoft.SqlServer.Management.Smo.Mail.MailProfile])
128131

129132
$ConfigValues | Add-Member -MemberType NoteProperty -Name 'DatabaseMailProfile' -Value (Get-DbcConfigValue agent.databasemailprofile)
130133

131134
$databaseMailProfile = $ConfigValues.DatabaseMailProfile.ForEach{
132135
[PSCustomObject]@{
133136
InstanceName = $Instance.Name
134137
ExpectedDatabaseMailProfile = $ConfigValues.DatabaseMailProfile
135-
ActualDatabaseMailProfile = $Instance.JobServer.DatabaseMailProfile
138+
ActualDatabaseMailProfile = $Instance.Mail.Profiles.Name
139+
}
140+
}
141+
142+
##TODO: Clean up
143+
#$databaseMailProfile += [PSCustomObject]@{
144+
# InstanceName = $Instance.Name
145+
# ExpectedDatabaseMailProfile = 'null'
146+
# ActualDatabaseMailProfile = 'null'
147+
#}
148+
#
149+
#Write-PSFMessage -Message "InstanceName : $($databaseMailProfile.InstanceName)" -Level Verbose
150+
#Write-PSFMessage -Message "ExpectedDatabaseMailProfile : $($databaseMailProfile.ExpectedDatabaseMailProfile)" -Level Verbose
151+
#Write-PSFMessage -Message "ActualDatabaseMailProfile : $($databaseMailProfile.ActualDatabaseMailProfile)" -Level Verbose
152+
#Write-PSFMessage -Message "ActualDatabaseMailProfile instance : $($Instance.Mail.Profiles.Name)" -Level Verbose
153+
154+
}
155+
'AgentMailProfile' {
156+
$AgentMailProfileInitFields.Add("DatabaseMailProfile") | Out-Null # so we can check failsafe operators
157+
$Instance.SetDefaultInitFields([Microsoft.SqlServer.Management.Smo.Agent.JobServer], $AgentMailProfileInitFields)
158+
$AgentMailProfileInitFields = $Instance.GetDefaultInitFields([Microsoft.SqlServer.Management.Smo.Agent.JobServer])
159+
160+
$ConfigValues | Add-Member -MemberType NoteProperty -Name 'AgentMailProfile' -Value (Get-DbcConfigValue agent.databasemailprofile)
161+
162+
$agentMailProfile = $ConfigValues.AgentMailProfile.ForEach{
163+
[PSCustomObject]@{
164+
InstanceName = $Instance.Name
165+
ExpectedAgentMailProfile = $ConfigValues.AgentMailProfile
166+
ActualAgentMailProfile = $Instance.JobServer.DatabaseMailProfile
136167
}
137168
}
138169

@@ -149,9 +180,6 @@ function Get-AllAgentInfo {
149180
#Write-PSFMessage -Message "ExpectedDatabaseMailProfile : $($databaseMailProfile.ExpectedDatabaseMailProfile)" -Level Verbose
150181
#Write-PSFMessage -Message "ActualDatabaseMailProfile : $($databaseMailProfile.ActualDatabaseMailProfile)" -Level Verbose
151182
#Write-PSFMessage -Message "ActualDatabaseMailProfile instance : $($Instance.JobServer.DatabaseMailProfile)" -Level Verbose
152-
}
153-
'AgentMailProfile' {
154-
155183
}
156184
'FailedJob' {
157185

@@ -190,6 +218,7 @@ function Get-AllAgentInfo {
190218
Operator = @($Operator)
191219
FailSafeOperator = @($failsafeOperator)
192220
DatabaseMailProfile = @($databaseMailProfile)
221+
AgentMailProfile = @($agentMailProfile)
193222
}
194223
return $testInstanceObject
195224
}

0 commit comments

Comments
 (0)