Powershell - Ausgabe von Inhalt meiner Variable
Hallo zusammen,
in meinem Programm fülle ich einige Variablen mit Werten (Variable-Name am Ende mit aufsteigender Ziffer). Diese möchte ich später ausgeben, ohne jede Variable einzelnd ("manuell") anzusprechen. Ich versuche den Variable-Namen in einer Schleife zu erzeugen und den Wert in der Variable zu verarbeiten/auszugeben.
Ich bekomme aber den Inhalt der Variable auf diesem Weg nicht ausgegeben. Kann mir da wohl jemand auf die Sprünge helfen, wo mein Fehler liegt?
Hier ein Beispiel um zu veranschaulichen, was ich genau meine:
Ich möchte folgendes ausgegeben bekommen:
Durchgang 1
Die Farbe ist rot
Durchgang 2
Die Farbe ist blau
Durchgang 3
Die Farbe ist grün
Ich bekomme aber ausgegeben:
Durchgang 1
Die Farbe ist $Farbe1
Durchgang 2
Die Farbe ist $Farbe2
Durchgang 3
Die Farbe ist $Farbe3
das ist mein Code:
Ich könnte mir vorstellen, das das Problem in dem .toString() liegt, mit dem ich die Variable fülle - ich wüsste aber nicht, wie ich das sonst machen sollte....
Vielen Dank
Holger
in meinem Programm fülle ich einige Variablen mit Werten (Variable-Name am Ende mit aufsteigender Ziffer). Diese möchte ich später ausgeben, ohne jede Variable einzelnd ("manuell") anzusprechen. Ich versuche den Variable-Namen in einer Schleife zu erzeugen und den Wert in der Variable zu verarbeiten/auszugeben.
Ich bekomme aber den Inhalt der Variable auf diesem Weg nicht ausgegeben. Kann mir da wohl jemand auf die Sprünge helfen, wo mein Fehler liegt?
Hier ein Beispiel um zu veranschaulichen, was ich genau meine:
Ich möchte folgendes ausgegeben bekommen:
Durchgang 1
Die Farbe ist rot
Durchgang 2
Die Farbe ist blau
Durchgang 3
Die Farbe ist grün
Ich bekomme aber ausgegeben:
Durchgang 1
Die Farbe ist $Farbe1
Durchgang 2
Die Farbe ist $Farbe2
Durchgang 3
Die Farbe ist $Farbe3
das ist mein Code:
$Farbe1= 'rot'
$Farbe2= 'blau'
$Farbe2= 'grün'
for ($counter=1;$counter -lt 4;$counter++) {
write-host Durchgang $counter
$Farbe=('$Farbe'+$counter).tostring()
write-host Die Farbe ist $Farbe
}
Ich könnte mir vorstellen, das das Problem in dem .toString() liegt, mit dem ich die Variable fülle - ich wüsste aber nicht, wie ich das sonst machen sollte....
Vielen Dank
Holger
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 3141087079
Url: https://administrator.de/forum/powershell-ausgabe-von-inhalt-meiner-variable-3141087079.html
Ausgedruckt am: 06.03.2025 um 18:03 Uhr
5 Kommentare
Neuester Kommentar
Moin,
sowas erreicht man am einfachsten über eine Enumeration.
Dadurch wird der Farbe wirklich ihr entsprechender Wert zugewiesen - und du kannst jederzeit den Wert in den Namen der Farbe - oder umgekehrt den Namen der Farbe in ihren Wert konvertieren.
Gruß Thomas
BTW: Schon einen Blick in unseren Powershell Leitfaden für Anfänger geworfen?
sowas erreicht man am einfachsten über eine Enumeration.
Dadurch wird der Farbe wirklich ihr entsprechender Wert zugewiesen - und du kannst jederzeit den Wert in den Namen der Farbe - oder umgekehrt den Namen der Farbe in ihren Wert konvertieren.
Enum Farbe {
rot = 1
blau = 2
grün = 3
}
1..3 | %{
"Durchgang $_"
"Die Farbe ist " + [Farbe]$_
}
Gruß Thomas
BTW: Schon einen Blick in unseren Powershell Leitfaden für Anfänger geworfen?
Moin Holger,
Aber um deine Frage zu beantworten:
Zur Info: iex ist Alias für Invoke-Expression und führt einen Text als Code aus.
Gruß Thomas
Zitat von @newbi2009:
In Wahrheit gibt es wesentlich mehr "Farben" und diese sind auch nicht statisch gefüllt. Sprich die Variable "$Farbe1" hat mal den Wert grün und mal den Wert rot.....
Das solltest du überdenken. Darüber hinaus lässt sich Enum auch mehrfach neu definieren - und du kannst natürlich beliebig Farben hinzufügen.In Wahrheit gibt es wesentlich mehr "Farben" und diese sind auch nicht statisch gefüllt. Sprich die Variable "$Farbe1" hat mal den Wert grün und mal den Wert rot.....
Aber um deine Frage zu beantworten:
$Farbe1= 'rot'
$Farbe2= 'blau'
$Farbe3= 'grün'
1..3 | %{
"Durchgang $_"
"Die Farbe ist " + (iex "`$Farbe$_")
}
Gruß Thomas