Benutzer mit den meisten Antworten
Power Shell Zugriff auf SQL Tabellen mit führenden Zahlen oder Sonderzeichen funktioniert nicht

Frage
-
Ich verwende Power Shell für die unterschiedlichsten Zugriffe auf MSSQL Datenbanken und das zumeist ohne Probleme.
in der Form:
$SqlConnection = New-Object System.Data.SqlClient.SqlConnection
$SqlConnection.ConnectionString = "xyz"
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand
$SqlCmd.CommandText = "xyz"
$SqlCmd.Connection = $SqlConnection
$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
$SqlAdapter.SelectCommand = $SqlCmd
$SqlAdapter.SelectCommand.CommandTimeout = 0
$DataSet = New-Object System.Data.DataSet
$tablerows = $SqlAdapter.Fill($DataSet)Jetzt habe ich allerdings eine Tabelle in der Form [1$Irgendwas] vorliegen, die in der Power Shell Fehlermeldungen liefert weil aus diesem Tabellennamen (wenn man sich den $SqlCmd anschaut) eine Tabelle in der Form [1] generiert?!?
Ich habe schon alle möglichen Klammerungen, Escape Sequenzen, usw. probiert, komme aber zu keinem Ergebnis.
Muss ich mir hier einen View ohne führende Zahlen, oder Sonderzeichen wie das $ Zeichen bauen, um via Power Shell zugreifen zu können, oder gibt es hier eine "normale" Lösung?
Liebe Grüße und danke für Antworten im Voraus,
Robert
Antworten
-
Der Name sollte a) in einer Variablen oder b) in Hochkomma stehen.
Bei doppelten Hochkomma ist die Variablenersetzung zu berücksichtigen:https://powershellexplained.com/2017-01-13-powershell-variable-substitution-in-strings/
Also
Form['1$Name']
oder
$Name = '1$Name'
Form[$Name]- Als Antwort markiert Denniver ReiningMVP, Moderator Sonntag, 17. November 2019 15:37
-
Moin,
Bitte Code immer als Code posten (Button im Editor)!
Sonderzeichen, die für Powershell eine Bewandntnis haben, hier z. B. Das Dollarzeichen, musst Du escapen - in Powershell ist das Zeichen dafür der Backtick (schräges Hochkomma von oben links nach unten rechts).
Wenn also in der Variablen $a der Text "xxx" steht und die Variablen $b leer ist, passiert folgendes:
'1$a' ergibt 1$a
"1$a" ergibt 1xxx
"1$b" ergibt 1
"1ˋ$a" ergibt 1$a
Evgenij Smirnov
- Als Antwort markiert Denniver ReiningMVP, Moderator Sonntag, 17. November 2019 15:37
Alle Antworten
-
Der Name sollte a) in einer Variablen oder b) in Hochkomma stehen.
Bei doppelten Hochkomma ist die Variablenersetzung zu berücksichtigen:https://powershellexplained.com/2017-01-13-powershell-variable-substitution-in-strings/
Also
Form['1$Name']
oder
$Name = '1$Name'
Form[$Name]- Als Antwort markiert Denniver ReiningMVP, Moderator Sonntag, 17. November 2019 15:37
-
Moin,
Bitte Code immer als Code posten (Button im Editor)!
Sonderzeichen, die für Powershell eine Bewandntnis haben, hier z. B. Das Dollarzeichen, musst Du escapen - in Powershell ist das Zeichen dafür der Backtick (schräges Hochkomma von oben links nach unten rechts).
Wenn also in der Variablen $a der Text "xxx" steht und die Variablen $b leer ist, passiert folgendes:
'1$a' ergibt 1$a
"1$a" ergibt 1xxx
"1$b" ergibt 1
"1ˋ$a" ergibt 1$a
Evgenij Smirnov
- Als Antwort markiert Denniver ReiningMVP, Moderator Sonntag, 17. November 2019 15:37
-
Das funktioniert aber wie schon ganz oben beschrieben nicht!
Das hätte ich ja schon bei meinen zahlreichen Klammerungsversuchen probiert.
Weder '1$Irgendwas', noch 1'$Irgendwas', noch irgendwelche andere "Klammerungen" greifen, es wird immer '1' als Ergebnis erzeugt.
Aber der backtick reicht mir
Robert