Quantcast
Channel: Windows PowerShell Forum
Viewing all articles
Browse latest Browse all 2314

RegEx / .contains()

$
0
0

Hallo zusammen,

ich habe ein Problem und komme einfach nicht voran egal wie ich es drehe und wende.

Ich habe variable1-x z.B. mit den Namen v_foo_123v_bar_123v_boop_123v_boophoop_123, v_boophoop_234. In einer ForEach Schleife möchte ich den entsprechenden String Value aus einer Hashtabel haben, wenn mein Variabel Name mit dem Key Name im Hashtable übereinstimmt. Das klappt soweit mit einem Where-Object, nur bei v_boophoop_123 und v_boophoop_234 bekomme ich mit einem .contains($_.Key) immer String3 und String4, weil ja beides enthalten ist. Mit einem escaped Regex wo ich den Key einfüge dasselbe, da das wohl im Endeffekt auch die gleiche Funktion wie bei .contains() hat.

Ich habe keine Idee wie ich das z.B. mit nem RexEx Abfragen kann, da die Variabel Namen und Keys immer unterschiedlich sind.

Mein Code:

New-Variable -Name v_foo_123 -Value "Foo Test 123" -Force
New-Variable -Name v_bar_123 -Value "Bar Test 123" -Force
New-Variable -Name v_boop_123 -Value "Boop Test 123" -Force
New-Variable -Name v_boophoop_123 -Value "BoopHoop Test 123" -Force
New-Variable -Name v_boophoop_234 -Value "BoopHoop Test 234" -Force
$hashtable =@{
   foo = "String1"
   bar = "String2"
   boop = "String3"
   boophoop = "String4"
}

$variables = Get-Variable -Name v_*
    ForEach ($var in $variables) 
    {
       #$String= ($hashtable.GetEnumerator() | Where-Object {$var.Name.Substring(2) -match [regex]::Escape($_.Key)}).Value 
       $String= ($hashtable.GetEnumerator() | Where-Object {$var.Name.Substring(2).Contains($_.Key)}).Value
       Write-host $var.Name "->" $String
    }


Der $String ist dann bei v_boophoop_123 und v_boophoop_234 immer String3 und String4. Es sollte aber nur String4 sein, vielleicht kann mir jemand helfen, ich bin mit meinem Latein am Ende. 

Danke und Gruß

André


Viewing all articles
Browse latest Browse all 2314


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>