Problem

Find SQL Server Maintenance Plans

Solution

#NOSQLPS
#-TrustServerCertificate works from v22 and up. if unknown, run Install-Module -Name SQLServer -AllowClobber -Confirm:$False -Force
$server_name = [System.Net.Dns]::GetHostEntry($env:computerName).HostName
$data = @(Get-ChildItem -Path cert: -Recurse | Select-Object PSPath,PSChildName,DnsNameList,SerialNumber,IssuerName,NotAfter,FriendlyName,Issuer,Subject | Where-Object { $_.FriendlyName -eq "SQLSERVER" }
)
$PSPath = $data.PSPath
$PSChildName = $data.PSChildName
$DnsNameList = $data.DnsNameList
$SerialNumber = $data.SerialNumber
$IssuerName = $data.IssuerName
$NotAfter = $data.NotAfter
$FriendlyName = $data.FriendlyName
$Issuer = $data.Issuer
$Subject = $data.Subject
if ($PSPath -ne $null)
{
$query="EXEC DBA.maintenance.usp_collect_server_tls_info @PSPath='$PSPath',@PSChildName='$PSChildName',@DnsNameList='$DnsNameList',@SerialNumber='$SerialNumber',@IssuerName='$IssuerName',@NotAfter='$NotAfter',@FriendlyName='$FriendlyName',@Issuer='$Issuer',@Subject='$Subject'"
Write-Output "starting $query"
Invoke-SQLcmd -ServerInstance $server_name -query $query -Database DBA -TrustServerCertificate
Write-Output "completed $query"
}