2009-10-01 8 views
25

私はID、名前のペアを返す関数を書いています。私はpowershellには連想配列がありますか?

$a = get-name-id-pair() 
$a.Id 
$a.Name 

が好きなような何かをしたいと思います

はJavaScriptで可能です。または少なくとも

$a = get-name-id-pair() 
$a["id"] 
$a["name"] 

が可能です。私はパワーシェルでそれをすることはできますか?

答えて

43

$a = @{'foo'='bar'} 

または

$a = @{} 
$a.foo = 'bar' 
+0

古いコメントが、どのようにあなたは、foreachループを経由して連想配列をループしませんか? –

+3

$連想配列= @ { ジェーン= 1 トム= 2 ハリー= 3 } foreachの($ associativeArray.Keysで$キー)$における{ $キー } foreachの($アイテム{0} = {1} "-f $ item.Key、$ item.Value }×コメントの長さは15文字以上でなければなりません。コメントは少なくとも15文字でなければなりません。長さ×コメントは少なくとも15文字の長さでなければなりません。 –

22

はい。同じくらい

function get-faqentry { "meaning of life?", 42 } 
$q, $a = get-faqentry 

ない連想配列、しかし:あなたはまた、これを行うことができ、それらを

$a = @{} 
$a["foo"] = "bar" 
0

を作成するには、次の構文を使用します。有用。

9
#Define an empty hash 
$i = @{} 

#Define entries in hash as a number/value pair - ie. number 12345 paired with Mike is entered as $hash[number] = 'value' 

$i['12345'] = 'Mike' 
$i['23456'] = 'Henry' 
$i['34567'] = 'Dave' 
$i['45678'] = 'Anne' 
$i['56789'] = 'Mary' 

#(optional, depending on what you're trying to do) call value pair from hash table as a variable of your choosing 

$x = $i['12345'] 

#Display the value of the variable you defined 

$x 

#If you entered everything as above, value returned would be: 

Mike 
0

-Oisin私は、複数のドメインで作業するときにサイト/ディレクトリを追跡するためにこれを使用しています。むしろ、個別に各項目を追加するよりも、それを宣言するときには、配列を初期化することが可能である:私は解決策を探していたとものを見つけていなかったとして

$domain = $env:userdnsdomain 
$siteUrls = @{ 'TEST' = 'http://test/SystemCentre' 
       'LIVE' = 'http://live/SystemCentre' } 

$url = $siteUrls[$domain] 
3

は、また、ハッシュテーブルを反復処理する方法が追加されます...

$c = @{"1"="one";"2"="two"} 
foreach($g in $c.Keys){write-host $c[$g]} #where key = $g and value = $c[$g] 
1
PS C:\> $a = @{}              
PS C:\> $a.gettype()             

IsPublic IsSerial Name          BaseType    

-------- -------- ----          --------    

True  True  Hashtable        System.Object  

だから、ハッシュテーブルは連想配列です。ああ。

または:

PS C:\> $a = [Collections.Hashtable]::new()