PowerShell - Hochkomma und Anführungszeichen deklarieren
Hallo.
Ich habe ein kleines Anfängerproblem mit den Anführungszeichen, um mit den deklarierten Variablen weiterarbeiten zu können.
Bei dem folgenden 1. Beispiel wurde bewusst mit Hochkomma und Anführungszeichen gearbeitet, um das Problem
etwas besser zu veranschaulichen.
1. Beispiel:
2. Beispiel:
Verwendet man bei $p1 + $p3 ein Anführungszeichen:
wird $p1 und $p3 ignoriert.
Leider haben meine unzählige Versuche nicht dazu geführt, dieses Problem im Griff zu bekommen
Wie muss man das 2. Beispiel deklarieren, dass ich Ausgabe wie bei Beispiel 1 ist, um mit $p1 und $p3 als Variable arbeiten zu können?
Vielen Dank für eine Hilfestellung.
Gruß
Ich habe ein kleines Anfängerproblem mit den Anführungszeichen, um mit den deklarierten Variablen weiterarbeiten zu können.
Bei dem folgenden 1. Beispiel wurde bewusst mit Hochkomma und Anführungszeichen gearbeitet, um das Problem
etwas besser zu veranschaulichen.
1. Beispiel:
$p1 = '$Das'
$p2 = "_ist"
$p3 = '$_ein_Test'
$p4 = "_OK"
$data = @("_A","_B","_C","_D")
$Ergebnis = "$p1$($p2) = $p3$($p4)" + $data[1]
Ausgabe:
$Das_ist = $_ein_Test_OK_B
2. Beispiel:
Verwendet man bei $p1 + $p3 ein Anführungszeichen:
$p1 = "$Das"
$p2 = "_ist"
$p3 = "$_ein_Test"
$p4 = "_OK"
$data = @("_A","_B","_C","_D")
$Ergebnis = "$p1$($p2) = $p3$($p4)" + $data[1]
Ausgabe:
_ist = _OK_B
wird $p1 und $p3 ignoriert.
Leider haben meine unzählige Versuche nicht dazu geführt, dieses Problem im Griff zu bekommen
Wie muss man das 2. Beispiel deklarieren, dass ich Ausgabe wie bei Beispiel 1 ist, um mit $p1 und $p3 als Variable arbeiten zu können?
Vielen Dank für eine Hilfestellung.
Gruß
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 1732671281
Url: https://administrator.de/contentid/1732671281
Ausgedruckt am: 19.12.2024 um 15:12 Uhr
14 Kommentare
Neuester Kommentar
Wenn wenn du nicht willst das Variablen innerhalb von Anführungszeichen expandiert werden escape das Dollarzeichen mit dem Backtick (`)
oder kombiniere mittels +
Damit du es für die Zukunft verstehst, lies: about_Quoting_Rules
==
$p1 = "`$Das"
$p3 = "`$_ein_Test"
$p1 = '$' + 'Das'
$p3 = '$' + '_ein_Test'
Damit du es für die Zukunft verstehst, lies: about_Quoting_Rules
$p1 = "`$Das"
$p2 = "_ist"
$p3 = "`$_ein_Test"
$p4 = "_OK"
$data = @("_A","_B","_C","_D")
$Ergebnis = "$p1$p2 = $p3$p4$($data[1])"
$ergebnis
$Das_ist = $_ein_Test_OK_B
Dann musst du das auch schreiben, konnte ich so leider nicht eindeutig interpretieren was das Ergebnis sein sollte.
Willst du den Namen einer neue Variablen erstellen nutze einfach New-Variable oder Set-Variable und bau den Wert im Value zusammen.
Willst du den Namen einer neue Variablen erstellen nutze einfach New-Variable oder Set-Variable und bau den Wert im Value zusammen.
$p1 = "Das"
$p2 = "_ist"
$p3 = "_ein_Test"
$p4 = "_OK"
$data = @("_A","_B","_C","_D")
Set-Variable -Name "$p1$p2" -Value "$p3$p4$($data[1])"
$Das_ist
s. Beispiel im lezten Kommentar.
Zitat von @AN34Mem:
Leider hilft der Lösungsvorschlag nicht weiter.
statt: $p1 = "$Das" wurde $p1 = "Das" verwendet.
und für $p3 = "$_ein_Test" -> $p3 = "_ein_Test"
Läßt man das $ Zeichen weg, erfolgt wie am Anfang:
Ausgabe: Das_ist = _ein_Test_OK_B
Benötigt wird aber:
Ausgabe: $Das_ist = $_ein_Test_OK_B
und nicht:
Ausgabe: _ist = _OK_B
Du hast dabei einen Denkfehler wie man in der Powershell Variablen verwendet ... Variablennamen verwendet man dort wo die Wertzuweisung stattfindet .Leider hilft der Lösungsvorschlag nicht weiter.
statt: $p1 = "$Das" wurde $p1 = "Das" verwendet.
und für $p3 = "$_ein_Test" -> $p3 = "_ein_Test"
Läßt man das $ Zeichen weg, erfolgt wie am Anfang:
Ausgabe: Das_ist = _ein_Test_OK_B
Benötigt wird aber:
Ausgabe: $Das_ist = $_ein_Test_OK_B
und nicht:
Ausgabe: _ist = _OK_B
Wenn du Variablennamen als Text interpretieren und in Code umwandeln willst nimmst du Invoke-Expression
Zitat von @AN34Mem:
Diese exakte Ausgabe (Schreibweise) wird benötigt: $Das_ist = $_ein_Test_OK_B
inklusive Dollarzeichen, und nicht Das_ist = _ein_Test_OK_B.!
Sowie muss "$Das_ist" zur weiteren Verarbeitung zur Verfügung stehen...
Diese exakte Ausgabe (Schreibweise) wird benötigt: $Das_ist = $_ein_Test_OK_B
inklusive Dollarzeichen, und nicht Das_ist = _ein_Test_OK_B.!
Sowie muss "$Das_ist" zur weiteren Verarbeitung zur Verfügung stehen...
Na wenn's weiter nix is brauchst du noch nicht mal Invoke-Expression, einfach noch ein escaptes $ vor gepappt
$p1 = "Das"
$p2 = "_ist"
$p3 = "_ein_Test"
$p4 = "_OK"
$data = @("_A","_B","_C","_D")
Set-Variable -Name "$p1$p2" -Value "`$$p3$p4$($data[1])"
$Das_ist
$_ein_Test_OK_B
Zitat von @AN34Mem:
Hacktor bei deinem Beispielen ist immer:
statt: $p1 = "$Das" $p1 = "Das"
statt: $p3 = "$_ein_Test" $p3 = "_ein_Test"
Damit stehe ich wieder am Anfang wenn ich die Schreibweise ändere.
Ich denke eher das die Lösung vermutlich bei Invoke-Expression liegt...
Hacktor bei deinem Beispielen ist immer:
statt: $p1 = "$Das" $p1 = "Das"
statt: $p3 = "$_ein_Test" $p3 = "_ein_Test"
Damit stehe ich wieder am Anfang wenn ich die Schreibweise ändere.
Ich denke eher das die Lösung vermutlich bei Invoke-Expression liegt...
Ich weiß langsam ehrlich nicht mehr was du eigentlich willst, dann eben mit Dollar geht auch ...
$p1 = "`$Das"
$p2 = "_ist"
$p3 = "`$_ein_Test"
$p4 = "_OK"
$data = @("_A","_B","_C","_D")
Set-Variable -Name "$p1$p2".replace('$','') -Value "$p3$p4$($data[1])"
$Das_ist
Du baust da ehrlich gesagt ein Konstrukt was mir viel zu kompliziert gedacht erscheint weil du nicht alle Möglichkeiten der PS kennst, sowas habe ich noch nie gebraucht und ich arbeite schon lange mit der PowerShell. Du hast da sicher schon bei der Umsetzung ein konstruktiven Denkfehler eingebaut.
Es wäre jetzt also mal an der Zeit den Grund deines Vorhabens hier zu verdeutlichen. Dann lässt sich sicher besser helfen als mit solchen nichts sagenden Beispielen!