When writing scripts I like to use PowerShell ISE a lot. It simplifies a lot of your daily scripting tasks like IntelliSense or Snippets. But sometimes these little helper don’t tell always the truth. Why? Well, I show you an example which is quite common.

On problem there is if you are working with hash tables is that you have a key value pair and you would like to retrieve a value for a specific key. Like in this example I want to retrieve the value for Key2…

 $Hash = @{Key1 = "Value1";Key2 = "Value2"}

If you check the the IntelliSense of $Hash, you could use…

 $Hash.Key2 

…this would output Value2, that’s correct. But what if you have a hash table and you would like to “search” for a specific key?

Well, if we expose the members using Get-Member we see something like this…

image

There isn’t anything that could help, so we add a little special power to the Get-Member command using –Force, we receive a lot more info…

image

One very interesting method to our problem seems the “hidden” Get_Item() method, if we try something like…

$Hash.Get_Item("Key2")

…we will receive the corresponding value “Value2”

How does this help? Well you could easily replace the “Key2” string through a variable if needed.

If you need to change the value of “Key2” you can just use the Set_Item() method like this…

Hash.Set_Item("Key2", "Value3")

Now the new value is “Value3”.

As you can see it is easily possible to discover new members using Get-Member –Force and if you need to discover a value for a specific key in a hash table use the Get_Item() method.

Leave a Comment