Powershell: ODBC Schnittstellen erneuern

Powershell

Sie kennen das vielleicht: endlich wurde der Datenbankserver erneuert und auf den neuesten Stand gebracht. Es gibt zahllose Anwendungen, die über Microsoft Access oder Excel auf den Datenbestand zugreifen. Dafür haben Sie vor Jahren eine ODBC Schnittstelle bei jedem User eingerichtet. Jetzt sind die User aber alle im HomeOffice oder aus zwei oder drei Usern wurden mittlerweile Dutzende, die mit ihren Programmen arbeiten.

Nun, dieser Beitrag aus dem Bereich „Coding“ erklärt. wie Sie diese Schnittstellen über Powershell bei allen Nutzern gleichzeitig aktualisieren können. Wie Sie so ein Script per Mail und mit der Hilfe von VBScript mühelos verteilen können, hatte ich in dem ersten Beitrag der Serie erklärt. Dieses Script wäre also jetzt eine neue Variante von „MeinPowershellScript.ps1“.

Import-Module Wdac
Remove-OdbcDsn -Name "MeineODBC_Verbindung" -Platform "32-bit" -DsnType "User"
Add-OdbcDsn "MeineODBC_Verbindung" -DriverName "ODBC Driver 17 for SQL Server" -DsnType User -Platform 32-bit -SetPropertyValue @("Server=SERVERADRESSE", "Trusted_Connection=Yes", "Database=MeineDatabase") -PassThru

Dazu muss ich einiges erklären. Import-Module Wdac ist zwingend notwendig. Damit werden in das Powershellscript die Windows Data Access Components geladen. Diese beinhalten die beiden nachfolgend genutzten Befehle.

Zunächst entfernen wir die vorhandene, veraltete ODBC Verbindung namens „MeineODBC_Verbindung“ mit Remove-OdbcDsn. Warum? Nun ich gehe davon aus, das der Name der ODBC Verbindung schon in zahlreichen Tools genutzt wird, z.B. als Datenquellen in AccessDatenbanken. Damit sie diese nicht neu umschreiben müssen, nutzen wir für die neue ODBC Verbindung die gleiche Bezeichnung. Und dazu müssen wir die alte erst entfernen.

Bitte beachten Sie, dass Sie auf User-Ebene in ihrem Script auch nur Benutzer-DSN löschen und erstellen können. System-DSN könnten von den vom User ausgeführten Script nur erstellt werden, wenn der User auch Systemadministrator ist. Daher nutzen wir als Schalter -DsnType „User“. Der Plattform Typ -32 oder 64 Bit – muss ggf. angepasst werden.



Dann folgt mit Add-OdbcDsn die Erstellung der neuen ODBC Verbindung. Der Name ist identisch mit der alten Verbindung. Die nachfolgenden Parameter müssen Sie natürlich anpassen. Zunächst der ODBC Treiber analog zum genutzten Datenbanksystem. In diesem Beispiel ist das ein Microsoft SQL Server. Für Oracle oder MySQL müssen Sie natürlich die entsprechenden Treiber installieren und dann den Treibernamen exakt angeben.

Dann folgen Plattformtyp und DsnType (auch hier wird wieder nur „User“ funktionieren. Der nachfolgende Teil hängt davon ab, mit welchem Sicherheitskonzept ihre User mit der Datenbank kommunizieren. In diesem Beispiel wird die ActiveDirectory Kennung der Users, die auch für den SQL Server gültig ist, an den Server durchgereicht. Haben Sie ein anderes Sicherheitskonzept, dann müssen Sie die Parameter entsprechend anpassen. Ich denke, dieses Beispiel dürfte eines der am häufigsten vorkommenden Szenarios sein. Alle weitere Parameter mit vielen Beispielen, finden Sie auf dieser Support-Seite von Microsoft.

Noch ein Hinweis: Wenn Sie die Tabellen der Datenbank in Access verbunden haben, dann müssen Sie diese in den Tabellenverknüpfungen einmalig aktualisieren. Das können Sie machen, bevor Sie die AccessDatenbank an diese User ausgeben. Wie das funktionieren könnte, hatte ich auch schon erklärt.