Mike
Mike

Reputation: 164

PowerShell Hashtable show first key

I am playing around with hashtables in powershell and try to figure out, if there is a way, to show the content of Key1 (not the value).

I tried several ways to have as an result "Monday" but either I get all the names of the table, a blank return or an error message.

here's my table:

$Weekdays = @{Monday = 'Montag';Tuesday = 'Dienstag'}

If possible, I would like to have as an output only "Monday", is there a way, I can enter code to have "Monday" as an output?

Thank you very much for your help,

Mike

Upvotes: 10

Views: 10007

Answers (2)

Abul Ahmed
Abul Ahmed

Reputation: 46

$Weekdays = @{Monday = 'Montag';Tuesday = 'Dienstag'}

$Weekdays["Monday"] will print out Montag. it is like Arry with index. In Hashtable/Dictionary the key is the index. Definitely remember to put the key in quote. Otherwise it will fail.

Upvotes: 1

Oliver
Oliver

Reputation: 3255

You can access the Key/ValueCollection inside the hashtable:

$Weekdays = @{Monday = 'Montag';Tuesday = 'Dienstag'}    
echo $($Weekdays.Keys)[0]
echo $($Weekdays.Values)[1]

will return

Monday
Dienstag

enclosing the call to "Keys" in $() will result in the Collection being converted to an Object Array, as you ca see here:

$Weekdays = @{Monday = 'Montag';Tuesday = 'Dienstag'}
$Weekdays.Keys.Gettype()
$($Weekdays.Keys).Gettype()

which gives

IsPublic IsSerial Name                                     BaseType                                                                                                                     
-------- -------- ----                                     --------                                                                                                                     
False    True     KeyCollection                            System.Object                                                                                                                
True     True     Object[]                                 System.Array  

and an object array can be indexed into with integers.

Upvotes: 15

Related Questions