Eines der häufigsten Szenarien, in denen Powershell verwendet wird, ist die Abfrage von Daten aus einem SQL Server. In diesem Artikel werden wir uns näher mit dem Abfragen von SQL Server Daten mit Powershell beschäftigen.

Bevor wir beginnen, müssen wir sicherstellen, dass die notwendigen Module installiert sind, um mit einem SQL Server zu interagieren. Hierfür können wir das PowerShell-Modul „SqlServer“ installieren. Das Modul kann einfach über den Powershell-Paket-Manager installiert werden:

Install-Module -Name SqlServer

Nachdem das Modul installiert wurde, können wir mit dem Aufbau unserer Verbindung zum SQL Server beginnen. Hierfür benötigen wir die folgenden Informationen:

  • Servername
  • Datenbankname
  • Benutzername
  • Passwort

Diese Informationen können entweder als Klartext oder verschlüsselt gespeichert werden. Für eine einfache Beispielabfrage können wir diese Informationen direkt in unserem Skript festlegen:

$ServerName = "SERVERNAME"
$DatabaseName = "DATABASENAME"
$Username = "USERNAME"
$Password = "PASSWORD"

Nun können wir eine Verbindung zum SQL Server herstellen. Hierfür verwenden wir die Funktion „Invoke-Sqlcmd“. Diese Funktion ist Teil des „SqlServer“-Moduls und ermöglicht es uns, T-SQL-Abfragen direkt in Powershell auszuführen.

$ConnectionString = "Server=$ServerName;Database=$DatabaseName;User Id=$Username;Password=$Password;"
$Query = "SELECT * FROM [Table]"

$results = Invoke-Sqlcmd -Query $Query -ConnectionString $ConnectionString

In diesem Beispiel haben wir eine Verbindung zum SQL Server hergestellt und eine T-SQL-Abfrage ausgeführt, die alle Daten aus einer Tabelle zurückgibt. Die Ergebnisse der Abfrage werden in der Variablen „$results“ gespeichert.

Nun können wir die Ergebnisse unserer Abfrage ausgeben oder weiterverarbeiten. Eine Möglichkeit, die Ergebnisse auszugeben, ist die Verwendung der Funktion „Format-Table“.

$results | Format-Table -AutoSize

Dies wird die Ergebnisse in einer formatierten Tabelle ausgeben.

Alternativ können wir die Ergebnisse auch in eine CSV-Datei exportieren, indem wir die Funktion „Export-Csv“ verwenden.

$results | Export-Csv -Path "C:\output.csv" -NoTypeInformation

In diesem Beispiel werden die Ergebnisse in eine CSV-Datei mit dem Pfad „C:\output.csv“ exportiert.

Zusammenfassend ermöglicht Powershell in Verbindung mit dem „SqlServer“-Modul die einfache Abfrage von Daten aus einem SQL Server. Indem wir eine Verbindung zum SQL Server herstellen und T-SQL-Abfragen ausführen, können wir Daten abrufen und weiterverarbeiten. Wir können die Ergebnisse unserer Abfragen formatieren, in eine Datei exportieren oder weitere Verarbeitungen durchführen, je nach Anforderungen unserer Anwendung.

Von Michael