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-Key: 2609359525

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

Printed on: April 27, 2024 at 17:04 o'clock

Mitglied: 11078840001
Solution 11078840001 Mar 04, 2024 updated at 11:41:36 (UTC)
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
Member: michi1983
michi1983 Mar 04, 2024 at 11:35:19 (UTC)
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?
Mitglied: 11078840001
11078840001 Mar 04, 2024 updated at 11:35:47 (UTC)
Goto Top
Zitat von @michi1983:
Ist PS case sensitive?
Nein
Member: em-pie
em-pie Mar 04, 2024 updated at 11:43:41 (UTC)
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"  
Member: HighSpeed1
HighSpeed1 Mar 04, 2024 at 11:42:48 (UTC)
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