Scan network for instances of MS SQL with Powershell

PROBLEM: You need to find out which computers and servers in my network have an instance of MS SQL installed.

SOLUTION: In this solution we’ll create an instance of the Windows Management Instrumentation (WMI) for each computer in a list. We’ll then query the Win32_Service class for the existence of a service which name starts with “MSSQL”. Go ahead and open a Notepad session and enter the name of several computes you manage in your network, one name per line, and save it with the file name isSQLInstalled.txt. I saved mine in C: for simplicity.

foreach($svr in get-content "C:isSQLInstalled.txt") {
    $filter = "name LIKE 'MSSQL%'"
    $result = get-wmiobject win32_Service -f $filter -computername $svr
    $resulttxt = [bool] $result
    write-host "$svr`: $resulttxt"
}

You need to be member of the Administrator role in each computer in the list for this script to execute successfully. This is a very basic way to search for instances of MS SQL installed in your network. One way you can expand this solution is by using a variable to capture the computer names in your network via Active Directory. You can then use this variable in the loop instead of reading the computer names from a file as we did in this solution.

Leave a Reply