Description:

Are all SQL Server related and required services actually runing and in a well state? Checking this manually takes a lot

of time.
With this PowerShell script you can easily check all SQL Server related services for all servers of a given list.
Gives a warning message if a service with "StartMode = Auto" is not running.

Works with MS SQL Server 2000 and higher version services.
Requires permission to connect to and fetch WMI data from the machine(s).

PowerShell
Skript bearbeiten|Remove
<# 
 .SYNOPSIS 
    Check SQL Server related services on several machines. 
 .DESCRIPTION 
    Are all SQL Server related and required services actually runing and in a well state? Checking this manually takes a lot  
 
of time. 
    With this PowerShell script you can easily check all SQL Server related services for all servers of a given list. 
    Gives a warning message if a service with "StartMode = Auto" is not running. 
    Works with MS SQL Server 2000 and higher version services. 
    Requires permission to connect to and fetch WMI data from the machine(s). 
 .NOTES 
    Author  : Olaf Helper 
    Requires: PowerShell Version 1.0 
 .LINK 
    TechNet Get-WmiObject 
        http://technet.microsoft.com/en-us/library/dd315295.aspx 
#> 
 
# Configuration data. 
# Add your machine names to check for to the list: 
[Array] $servers = "Server1" ` 
                 , "Server2" ` 
                 , "Server3"; 
 
# Defining output format for each column. 
$fmtName   =@{label="Service Name" ;alignment="left"  ;width=30 ;Expression={$_.Name};}; 
$fmtMode   =@{label="Start Mode"   ;alignment="left"  ;width=10 ;Expression={$_.StartMode};}; 
$fmtState  =@{label="State"        ;alignment="left"  ;width=10 ;Expression={$_.State};}; 
$fmtStatus =@{label="Status"       ;alignment="left"  ;width=10 ;Expression={$_.Status};}; 
$fmtMsg    =@{label="Message"      ;alignment="left"  ;width=50 ; ` 
              Expression={ if (($_.StartMode -eq "Auto"-and ($_.State -ne "Running") ) {"Alarm: Stopped"} };}; 
 
foreach($server in $servers) 
{ 
    $srvc = Get-WmiObject ` 
            -query "SELECT *  
                    FROM win32_service  
                    WHERE    name LIKE '%SQL%'  
                          OR name LIKE '%MSOLAP%' 
                          OR name LIKE '%ReportServer%' 
                          OR name LIKE '%MSDtsServer%'" ` 
             -computername $server ` 
            | Sort-Object -property name; 
     
    Write-Output ("Server: {0}" -$server); 
    Write-Output $srvc | Format-Table $fmtName$fmtMode$fmtState$fmtStatus$fmtMsg;     
}