Powershell Variable mit User aus mysql Abfrage
Hallo. ich mal wieder.
Ich benötige eine Variable mit einem Usernamen, den ich aus einer MySQL Datenbank in Windows abfragen möchte.
den Pfad zum mysql bin-Verzeichnis hab ich bereits in einer variablen $mysql_bin_path
So in der Art müsste das abgefragt werden. Die Syntax ist natürlich nicht korrekt.
Als Ausgabe bzw. Wert für die Variable soll dann nur "RSS_A" oder RSS_A_1" oder RSS_A_2" etc. ausgegeben werden.
Der username ist von Datanbank zu Datenbank unterschiedlich, weshalb ich die Variable gern mit dieser Art Abfrage setzten würde
Ich benötige eine Variable mit einem Usernamen, den ich aus einer MySQL Datenbank in Windows abfragen möchte.
den Pfad zum mysql bin-Verzeichnis hab ich bereits in einer variablen $mysql_bin_path
$username = [$mysql_bin_path] \mysql.exe -h 127.0.0.1 -u root -ppassword dbname -e "select username from useraccount where username regexp 'RSS_A'
So in der Art müsste das abgefragt werden. Die Syntax ist natürlich nicht korrekt.
Als Ausgabe bzw. Wert für die Variable soll dann nur "RSS_A" oder RSS_A_1" oder RSS_A_2" etc. ausgegeben werden.
Der username ist von Datanbank zu Datenbank unterschiedlich, weshalb ich die Variable gern mit dieser Art Abfrage setzten würde
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 441320
Url: https://administrator.de/forum/powershell-variable-mit-user-aus-mysql-abfrage-441320.html
Ausgedruckt am: 12.04.2025 um 05:04 Uhr
11 Kommentare
Neuester Kommentar

den Pfad zum mysql bin-Verzeichnis hab ich bereits in einer variablen $mysql_bin_path
Vollkommen überflüssig. Powershell kann nativ über die NET Klassen ohne irgendwelchen Kommandozeilen-Tools auf mySQL Server zugreifen!https://www.google.com/search?q=Powerhsell+mySQL+Query
http://www.techtrek.io/connecting-powershell-to-mysql-database/
usw.
Die Bemühung der Kommandozeile aus Powershell heraus ist also vollkommen überflüssiger Overhead. Powershell arbeitet ja objektorientiert und so sollte man es auch primär nutzen, nicht wie in Batch wo alles ein String oder Zahl ist.

, ich müsste auf jedem Server zuerst den MySQL .NET Connector installieren.
Nein, die DLL reicht völlig, Installation unnötig.
jetzt möchte ich den user RSS_A_1, also das erste ergebnis als Variable haben
Hab ich dir beim letzten Mal doch schon gezeigt Stichwort select -First 1 oder eben über den ArrayIndex der Ausgabe .Oder direkt über SQL via **SELECT TOP 1 ......" Dann bekommst du direkt auch nur ein Ergebnis.

Zitat von @MarciMarc85:
Danke. Das funktioniert.
Kannst du mir evtl. noch helfen, wie ich die Ausgabe "RSS_A_1" nun in die Variable bekomme Bsp.: $user = RSS_A_1
Oh man, frag dich doch mal selbst wasDanke. Das funktioniert.
Kannst du mir evtl. noch helfen, wie ich die Ausgabe "RSS_A_1" nun in die Variable bekomme Bsp.: $user = RSS_A_1
$myreader.GetString(0) wohl macht ...
Genau, holt den String einer Tabellenspalte nacheinander für jede Ergebniszeile.
https://docs.microsoft.com/de-de/dotnet/api/system.data.sqlclient.sqldat ...
D.h. jedes mal wenn du die. read() Methode aufrufst enthält $reader jeweils eine neue Zeile . Brauchst du also nur den Wert der erste Zeile brauchst du keine While Schleife mehr sondern rufst einmalig $reader.Read() auf um dann den Wert in deine ach so heiß geliebte Variable zu schreiben
$var = $reader.GetString(0).
Und, war das nun so schwer? Nee nee, hätte nur einen kleinen Blick in die Referenz genügt.

Nö, aber wenn man noch nicht mal vorher zumindest ins Handbuch schaut und jeden Furz erfragt ärgert das schon zwischenzeitlich in einem Admin-Forum und man kommt sich verkackeiert vor.
Steht doch da
Viel Spaß noch.
Steht doch da
You have specified an invalid column ordinal.
Gib den passenden Spaltenindex oder Name an und fertig!Viel Spaß noch.