37

IDと名前のペアを返す関数を書いています。

私は次のようなことをしたいです

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

のようなものはjavascriptで可能です。または少なくとも

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

phpでのように可能です。PowerShellでそれを行うことはできますか?

4

8 に答える 8

55

また

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

また

$a = @{}
$a.foo = 'bar'
于 2009-10-02T01:55:37.153 に答える
25

はい。次の構文を使用してそれらを作成します

$a = @{}
$a["foo"] = "bar"
于 2009-10-01T19:48:45.583 に答える
20

解決策を探していたのに見つからなかったので、ハッシュテーブルを反復処理する方法も追加します...

$c = @{"1"="one";"2"="two"} 
foreach($g in $c.Keys){write-host $c[$g]} #where key = $g and value = $c[$g]
于 2017-01-22T11:37:35.460 に答える
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
于 2010-09-09T06:35:03.103 に答える
2

複数のドメインで作業しているときにサイト/ディレクトリを追跡するためにこれを使用します。各エントリを個別に追加するのではなく、宣言時に配列を初期化することができます。

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

$url = $siteUrls[$domain]
于 2015-05-05T23:07:31.533 に答える
2
PS C:\> $a = @{}                                                      
PS C:\> $a.gettype()                                                  

IsPublic IsSerial Name                                     BaseType            

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

True     True     Hashtable                                System.Object       

したがって、ハッシュテーブルは連想配列です。ああ。

または:

PS C:\> $a = [Collections.Hashtable]::new()
于 2017-07-24T04:15:07.447 に答える
2

JSON文字列から作成

$people= '[
{
"name":"John", 
"phone":"(555) 555-5555"
},{
"name":"Mary", 
"phone":"(444) 444-4444"
}
]';

# Convert String To Powershell Array
$people_obj = ConvertFrom-Json -InputObject $people;

# Loop through them and get each value by key.
Foreach($person in $people_obj ) {
    echo $person.name;
}
于 2018-05-15T06:52:47.680 に答える
1

これを行うこともできます:

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

連想配列ではありませんが、同様に便利です。

-オシーン

于 2009-10-03T15:10:02.673 に答える