functions/Get-DbaAgentOperator.ps1
function Get-DbaAgentOperator { <# .SYNOPSIS Returns all SQL Agent operators on a SQL Server Agent. .DESCRIPTION This function returns SQL Agent operators. .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 Operator The operator(s) to process - this list is auto-populated from the server. If unspecified, all operators will be processed. .PARAMETER ExcludeOperator The operator(s) to exclude - this list is auto-populated from the server .PARAMETER Silent Use this switch to disable any kind of verbose messages .NOTES Tags: Agent, Operator Author: Klaas Vandenberghe ( @PowerDBAKlaas ) 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-DbaAgentOperator .EXAMPLE Get-DbaAgentOperator -SqlInstance ServerA,ServerB\instanceB Returns any SQL Agent operators on serverA and serverB\instanceB .EXAMPLE 'ServerA','ServerB\instanceB' | Get-DbaAgentOperator Returns all SQL Agent operators on serverA and serverB\instanceB .EXAMPLE Get-DbaAgentOperator -SqlInstance ServerA -Operator Dba1,Dba2 Returns only the SQL Agent Operators Dba1 and Dba2 on ServerA. .EXAMPLE Get-DbaAgentOperator -SqlInstance ServerA,ServerB -ExcludeOperator Dba3 Returns all the SQL Agent operators on ServerA and ServerB, except the Dba3 operator. #> [CmdletBinding()] Param ( [parameter(Position = 0, Mandatory = $true, ValueFromPipeline = $True)] [Alias("ServerInstance", "SqlServer")] [DbaInstanceParameter[]]$SqlInstance, [PSCredential] $SqlCredential, [object[]]$Operator, [object[]]$ExcludeOperator, [switch]$Silent ) process { foreach ($instance in $SqlInstance) { try { Write-Message -Level Verbose -Message "Connecting to $instance" $server = Connect-SqlInstance -SqlInstance $instance -SqlCredential $sqlcredential } catch { Stop-Function -Message "Failure" -Category ConnectionError -ErrorRecord $_ -Target $instance -Continue } Write-Message -Level Verbose -Message "Getting Edition from $server" Write-Message -Level Verbose -Message "$server is a $($server.Edition)" if ($server.Edition -like 'Express*') { Stop-Function -Message "There is no SQL Agent on $server, it's a $($server.Edition)" -Continue -Target $server } $defaults = "ComputerName", "SqlInstance", "InstanceName", "Name", "ID", "Enabled as IsEnabled", "EmailAddress", "LastEmail" if ($Operator) { $operators = $server.JobServer.Operators | Where-Object Name -In $Operator } elseif ($ExcludeOperator) { $operators = $server.JobServer.Operators | Where-Object Name -NotIn $ExcludeOperator } else { $operators = $server.JobServer.Operators } foreach ($operator in $operators) { $jobs = $server.JobServer.jobs | Where-Object { $_.OperatorToEmail, $_.OperatorToNetSend, $_.OperatorToPage -contains $operator.Name } $lastemail = [dbadatetime]$operator.LastEmailDate Add-Member -Force -InputObject $operator -MemberType NoteProperty -Name ComputerName -Value $server.NetName Add-Member -Force -InputObject $operator -MemberType NoteProperty -Name InstanceName -Value $server.ServiceName Add-Member -Force -InputObject $operator -MemberType NoteProperty -Name SqlInstance -Value $server.DomainInstanceName Add-Member -Force -InputObject $operator -MemberType NoteProperty -Name RelatedJobs -Value $jobs Add-Member -Force -InputObject $operator -MemberType NoteProperty -Name LastEmail -Value $lastemail Select-DefaultView -InputObject $operator -Property $defaults } } } } |