Powershell – Ermitteln aller installierter SQL Server Services
This post might contain affiliate links. We may earn a commission if you click and make a purchase. Your support is appreciated!
Manchmal sind es die kleinen Dinge, die einem das Leben erleichtern können… 😉
Vor oder nach der Installation des SQL Servers auf einem Windows Server sollte man auch einen entsprechenden Virenschutz installieren, oder man möchte bestimmte Dienste/Services aus dem Monitoring ausklammern… dann benötigt man für die jeweiligen Ausnahmen die Pfade und Namen der ausführenden Programme. Natürlich kann man sich diese Informationen manuell über die Services-Ansicht holen, aber diesen „Klick-Aufwand“ kann man sich getrotzt sparen, denn es geht viel einfacher.
Beispiel aus dem Leben
Für einige unserer Kunden und deren Anti-Viren-Strategie müssen wir unseren Kollegen immer eine EMail zukommen lassen, welche Dienste (ausführbaren Programme) und deren Verzeichnisse NICHT gescannt werden sollen… wir haben uns also auf ein Format geeinigt, welches wir schnell und einfach liefern können und wo die Kollegen die relevanten Daten auf „einen“ Blick entnehmen können, um diese dann in der Administrations-Oberfläche für den jeweiligen SQL Server zu hinterlegen. Da wir nicht nur einen SQL Server installieren, sondern ein paar mehr… musste eine „universelle“ Lösung her.
Wo bekommen wir also diese Daten idealerweise her? Natürlich aus dem Betriebssystem und dem bereits mitgelieferten WMI-Stack… also ran an die Services-Informationen
Get-WmiObject win32_service
Aber so erhalten wir eben eine Vielzahl von Informationen und Services, die wir für unsere Zwecke gar nicht gebrauchen können, denn wir wollen ja nur die SQL Server relevanten Services identifizieren und an die Kollegen melden… also müssen wir diese Informationsflut mit einem Filter eindämmen.
Jetzt erhalten wir nur noch alle Services mit dem Pattern „*sql*“, was für einen SQL Server völlig ausreichend ist, denn glücklicherweise werden aktuell alle SQL Server auf Windows Dienste mit eben diesem Pattern bezeichnet. Hier fehlen aber die relevanten Informationen wie Pfad und Exe oder der Anzeigename… damit wir nun auch diese weiteren Informationen erhalten muss man ein wenig tricksen und die Pfad-Angabe – welche hier ebenfalls (versteckt) enthalten ist – zerlegen.
Get-WmiObject win32_service | ?{$_.Name -like '*sql*'} | select Name, DisplayName, @{Name="Path"; Expression={$_.PathName.split('"')[1]}}
Theoretisch könnte man das nun an die Kollegen schicken, damit aber dort kein Fehler bei Copy&Paste passiert, formatieren wir das Ergebnis noch mit dem Powershell-Ausgabe-Format „Format-List“, dann verrutscht man nicht mehr so leicht in der Zeile und es ist etwas übersichtlicher (auf meinem Laptop ist nicht viel installiert, aber ihr versteht zumindest was ich meine) 😉
Get-WmiObject win32_service | ?{$_.Name -like '*sql*'} | select Name, DisplayName, @{Name="Path"; Expression={$_.PathName.split('"')[1]}} | Format-List
Dieses Ergebnis können wir nun ohne Bedenken in ein Mail-Template einfügen und den Kollegen schicken…
This post might contain affiliate links. We may earn a commission if you click and make a purchase. Your support is appreciated!
Björn arbeitet auch weiterhin aus Mexiko als Senior Consultant – Microsoft Data Platform und Cloud für die Kramer&Crew in Köln. Auch der Community bleibt er aus der neuen Heimat treu, er engagiert sich auf Data Saturdays oder in unterschiedlichen Foren. Er interessiert sich neben den Themen rund um den SQL Server, Powershell und Azure SQL für Science-Fiction, Backen 😉 und Radfahren.
Amazon.com Empfehlungen
Damit ich auch meine Kosten für den Blog ein wenig senken kann, verwende ich auf diese Seite das Amazon.com Affiliate Programm, so bekomme ich - falls ihr ein Produkt über meinen Link kauft, eine kleine Provision (ohne zusätzliche Kosten für euch!).
Auto Amazon Links: Keine Produkte gefunden.