highspeed1
Goto Top

PowerShell - String anpassen wenn sich ein Wert ändert

Hallo Forum.

Ich möchte den Inhalt der Variable $Text immer automatisch anpassen lassen wenn sich die Variable $Wert ändert. Hierzu habe ich früher schon einmal ein Codebeispiel gesehen. Leider kann ich es im Netz nicht mehr finden. Hat jemand von euch eine Idee wie man das umsetzen kann?

# definieren Wert
$Wert = 5

# Aufbereiten des Textes
$Text = "Der Wert ist: " + $Wert  

# Bildschirmausgabe
$Text

# Wert ändern
$Wert = 10

# Natürlicherweise wird hier der oben berechnete String "Der Wert ist: 5" ausgegeben. 
# Hier soll aber der neu berechnete Text ausgegeben werden, ohne das man ihn an dieser Stelle noch einmal berechnen muss. Er sollte dann lauten: "Der Wert ist: 10"  
$Text

Danke schon mal vorab.

Content-ID: 2609359525

Url: https://administrator.de/contentid/2609359525

Ausgedruckt am: 21.11.2024 um 16:11 Uhr

11078840001
Lösung 11078840001 04.03.2024 aktualisiert um 12:41:36 Uhr
Goto Top
Mittels Dotsourcing so
# definieren Wert
$Wert = 5
# Aufbereiten des Textes
$Text = {"Der Wert ist: $wert"}  
# Bildschirmausgabe
.$Text
# Wert ändern
$Wert = 10
# Bildschirmausgabe
.$Text

oder mit Invoke-Expression

# definieren Wert
$Wert = 5
# Aufbereiten des Textes
$Text = '"Der Wert ist: $wert"'  
# Bildschirmausgabe
Invoke-Expression $Text
# Wert ändern
$Wert = 10
# Bildschirmausgabe
Invoke-Expression $Text
michi1983
michi1983 04.03.2024 um 12:35:19 Uhr
Goto Top
Quote from @11078840001:

# definieren Wert
$Wert = 5
# Aufbereiten des Textes
$Text = {"Der Wert ist: $wert"}  
# Bildschirmausgabe
.$Text
# Wert ändern
$Wert = 10
# Bildschirmausgabe
.$Text

Ist PS case sensitive? Dann müsste es $Wert in Zeile 4 heißen, richtig?
11078840001
11078840001 04.03.2024 aktualisiert um 12:35:47 Uhr
Goto Top
Zitat von @michi1983:
Ist PS case sensitive?
Nein
em-pie
em-pie 04.03.2024 aktualisiert um 12:43:41 Uhr
Goto Top
Moin,

Es gibt viele Varianten....
Eine (elegante) hat dir @11078840001 ja schon gezeigt.
Eine weitere ("komplexere"), aber ideal für Routine-Prüfungen, die vom Wert abhängig sind.
function Set-Value(){
    Param
    (
        [Parameter(Mandatory=$true)]
        [Int] $myValue = 0
    )

    write-Host "Der Wert ist: $myValue"  
    # Hier kannst du mit dem Wert sogar noch irgendwas machen, z. B. validieren:
    if($myValue -ge 1000) {
        $myValue = $myValue / 1000
        write-Host "Der Wert ist nun $myValue k"  

    }

    return $myValue
}

$InputValue = Read-Host "Enter Number"  

$Wert = Set-Value -myValue $InputValue

### hier könntest du mit $Wert dann weiter arbeiten
Write-Host "Hier könnte Ihr Wert von $Wert stehen"  
HighSpeed1
HighSpeed1 04.03.2024 um 12:42:48 Uhr
Goto Top
Ah, super. Einfach nur einen Dot vor die Ausgabe der Text-Variable und die Berechnung in geschweifte Klammern.

Mit den geschweiften Klammer hatte ich schon mal. Aber auf den Dot bin ich nicht gekommen.

Großen dank an abramakabra