PowerShell - Get-Variable mit multiplen Suffix
Hallo Forum.
Ich habe in einer Variable den Namen einer anderen Variable stehen.
Diese hat jedoch mehrere Stufen.
Jetzt muss ich den Wert den diese Variable hat auslesen. Hierfür habe ich dieses Versuchsprogramm geschrieben.
Versuch 1-4 funktionieren.
Versuch 5: Im Gegensatz zu Versuch 4 hat hier das Suffix einen "." drinstehen. ==> Kein Ergebnis
Versuch 6: Das Suffix wir in zwei Teile zerteilt. ==> funktioniert
Versuch 7: Das Suffix wird automatisch in mehrere Teile zerteilt. Jedoch muss ich die Einzelnen Variablen noch manuell hintereinander setzen.
Wie kann man das automatisch machen, egal wie viele Suffix es gibt?
Hat jemand eine Idee wie man sowas umsetzen kann?
Ich habe in einer Variable den Namen einer anderen Variable stehen.
$VarDescription = "`$Test_1.Test_11.Test_111"
Diese hat jedoch mehrere Stufen.
$Test_1.Test_11.Test_111
Jetzt muss ich den Wert den diese Variable hat auslesen. Hierfür habe ich dieses Versuchsprogramm geschrieben.
Versuch 1-4 funktionieren.
Versuch 5: Im Gegensatz zu Versuch 4 hat hier das Suffix einen "." drinstehen. ==> Kein Ergebnis
Versuch 6: Das Suffix wir in zwei Teile zerteilt. ==> funktioniert
Versuch 7: Das Suffix wird automatisch in mehrere Teile zerteilt. Jedoch muss ich die Einzelnen Variablen noch manuell hintereinander setzen.
(Get-Variable $VarName).Value.$Suffix_01.$Suffix_02
Wie kann man das automatisch machen, egal wie viele Suffix es gibt?
cls
$Test_1 = [ordered]@{}
$Test_1.Test_11 = [ordered]@{}
$Test_1.Test_12 = "Text 12"
$Test_1.Test_11.Test_111 = "Text 111"
Write-Host "`nVersuch 1" -f Green
Write-Host "=========" -f Green
Write-Host "Var-Wert von `$Test_1.Test_12: " $Test_1.Test_12 -f Green
Write-Host "Var-Wert von `$Test_1.Test_11.Test_111: " $Test_1.Test_11.Test_111 -f Green
Write-Host `n=======================================================================================================================================================
Write-Host "`nVersuch 2" -f Cyan
Write-Host "=========" -f Cyan
Write-Host "Var-Wert von `$Test_1.Test_12: " (Get-Variable Test_1).Value.Test_12 -f Cyan
Write-Host `n=======================================================================================================================================================
Write-Host "Versuch 3" -f Magenta
Write-Host "=========" -f Magenta
Write-Host "Var-Wert von `$Test_1.Test_11.Test_111: " (Get-Variable Test_1).Value.Test_11.Test_111-f Magenta
Write-Host `n=======================================================================================================================================================
Write-Host "`nVersuch 4" -f Yellow
Write-Host "=========" -f Yellow
Write-Host "`nGet-Variable mit VarName und einem Suffix`n"
$VarDescription = "`$Test_1.Test_12"
$FullVarName = $VarDescription.Substring(1) # nur $-Zeichen abschneiden
$VarName = $FullVarName.Split('.')[0] # Alle Zeichen vor dem "."
$Suffix = $FullVarName.Split('.')[1] # Alle Zeichen hinter dem "."
Write-Host "FullVarName: " $FullVarName -f Yellow
Write-Host "VarName: " $VarName -f Yellow
Write-Host "Suffix: " $Suffix -f Yellow
Write-Host "Var-Wert von `$Test_1.Test_12: " (Get-Variable $VarName).Value.$Suffix -f Yellow
Write-Host `n=======================================================================================================================================================
Write-Host "`nVersuch 5" -f Red
Write-Host "=========" -f Red
Write-Host "`nGet-Variable mit VarName und mehreren Suffix in einer Variable`n"
$VarDescription = "`$Test_1.Test_11.Test_111"
$FullVarName = $VarDescription.Substring(1) # nur $-Zeichen abschneiden
$VarName = $FullVarName.Split('.')[0] # Alle Zeichen vor dem ersten "."
$Suffix = $FullVarName.Substring($VarName.Length+1) # Alle Zeichen hinter dem ersten "."
Write-Host "FullVarName: " $FullVarName -f Red
Write-Host "VarName: " $VarName -f Red
Write-Host "Suffix: " $Suffix -f Red
Write-Host "Var-Wert von `$Test_1.Test_11.Test_111: " (Get-Variable $VarName).Value.$Suffix -f Red
Write-Host `n=======================================================================================================================================================
Write-Host "`nVersuch 6" -f Green
Write-Host "=========" -f Green
Write-Host "`nGet-Variable mit VarName und geteiltem Suffix`n"
$Suffix_1 = $Suffix.Split('.')[0]
$Suffix_2 = $Suffix.Split('.')[1]
Write-Host "Var-Wert von `$Test_1.Test_11.Test_111: " (Get-Variable $VarName).Value.$Suffix_1.$Suffix_2 -f Green
Write-Host `n=======================================================================================================================================================
Write-Host "`nVersuch 7" -f Yellow
Write-Host "=========" -f Yellow
Write-Host "`nGet-Variable mit VarName und geteiltem Suffix in Variablen SuffixNamen`n"
$SuffixCounter =0
0..(($Suffix.Split('.').Count)-1) | foreach {
$SuffixCounter += 1
$SuffixName = "Suffix_0" + $SuffixCounter
$SuffixValue = $Suffix.Split('.')[$SuffixCounter-1]
Set-Variable -Name $SuffixName -Value $SuffixValue
Write-Host "SuffixCounter: " $SuffixCounter
Write-Host "SuffixName: " $SuffixName
Write-Host "SuffixValue: " $SuffixValue
Write-Host -----------------------------------------
}
Write-Host "Var-Wert von `$Test_1.Test_11.Test_111: " (Get-Variable $VarName).Value.$Suffix_01.$Suffix_02 -f Yellow
Hat jemand eine Idee wie man sowas umsetzen kann?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 671416
Url: https://administrator.de/forum/powershell-get-variable-mit-multiplen-suffix-671416.html
Ausgedruckt am: 22.02.2025 um 16:02 Uhr
6 Kommentare
Neuester Kommentar
Hat jemand eine Idee wie man sowas umsetzen kann?
Am besten wohl mit einem multidimensionalen Array
Manuel
Hier ist eigentlich ziemlich einfach erklärt, wie es funktioniert: https://redmondmag.com/Articles/2019/01/28/Multi-Dimensional-PowerShell- ...
Habe ich mal schnell gegoogelt. Bestimmt gibt es noch unzählige andere Seiten wo es vielleicht sogar auf deutsch erklärt wird.
Habe ich mal schnell gegoogelt. Bestimmt gibt es noch unzählige andere Seiten wo es vielleicht sogar auf deutsch erklärt wird.
Jetzt muss ich den Wert den diese Variable hat auslesen.
Invoke-Expression ist dein Freund$Test_1 = [ordered]@{
Test_11 = [ordered]@{
Test_111 = "Text 111"
}
}
$VarDescription = '$Test_1.Test_11.Test_111'
Invoke-Expression $VarDescription
Hallo,
Nö, ist nur längerer Text der nur für dich als Lesendes Individuum einen möglichen Sinn und Struktur ergibt. Ein Rechner sieht nur sehr viele 0en und 1en. Das Telefonbuch von München hat mehr Struktur.
Gruss,
Peter
Nö, ist nur längerer Text der nur für dich als Lesendes Individuum einen möglichen Sinn und Struktur ergibt. Ein Rechner sieht nur sehr viele 0en und 1en. Das Telefonbuch von München hat mehr Struktur.
Gruss,
Peter