From time to time every SQL DBA needs to know if their SQL Database servers are functioning properly. With PowerShell's Get-Service command-let it is
From time to time every SQL DBA needs to know if their SQL Database servers are functioning properly. With PowerShell’s Get-Service command-let it is easy.
$servers ="server01, server02, server03" # Creates an array of SQL servers $servicestatus = @{} # Creates a blank array foreach ($server in $servers) { Get-Service -name *sql* -Computername $server -ErrorAction SilentlyContinue | Sort-Object -Property DisplayName | foreach{ $k = $server + " -" + $_.DisplayName $v = $_.Status $servicestatus[$k] = $v Get-Service $_.Name | Select-Object -ExpandProperty ServicesDependedOn | foreach { $kd = $k + " has dependency on " + $_.DisplayName $s = $_.Status $serviceStatus[$kd] = $s }}} #See all Results $servicestatus | Format-Table -AutoSize #See Running Status of each service $servicestatus.GetEnumerator() | Sort-Object Value | Format-Table -AutoSize #Show only stopped services $servicestatus.GetEnumerator() | where-object{$_.Value -eq "Stopped"} | Format-Table -AutoSize
If you wanted you could incorporate the Send-SimpleMail function found here https://www.thecodeasylum.com/send-mail-with-powershell/
$body = $servicestatus.GetEnumerator() | where-object{$_.Value -eq "Stopped" | Format-Table -Autosize | Out-String Send-SimpleMail -subject "Stopped Services" -body $body
COMMENTS