2010-11-24 12 views
5

私はPowerShellでアプリケーションを開発しています。変数をハッシュテーブルに格納しています。どのようにして注文をハッシュテーブルに保存できますか?私は、ハッシュテーブルを埋め尽くしたときに、私と同じ順序にしたい。powershellのハッシュテーブル

答えて

8

ハッシュテーブルは本質的に値の順序を維持しません。 ネット上には既にいくつかの回避策があります。これら

http://www.tellingmachine.com/post/2009/01/When-PowerShell-hash-table-magic-backfires.aspx

http://huddledmasses.org/powershell-and-hashtable-oddities/

を確認するか、

PS C:\WINDOWS\system32> $OrderedList = New-Object System.Collections.Specialized.OrderedDictionary 
PS C:\WINDOWS\system32> $OrderedList 
PS C:\WINDOWS\system32> $OrderedList.Add("Name","Ravi") 
PS C:\WINDOWS\system32> $OrderedList.Add("Age","30") 
PS C:\WINDOWS\system32> $OrderedList 

Name       Value 
----       ----- 
Name       Ravi 
Age       30 
+0

! – RRR

+0

私が変数をハッシュに挿入する頃には、彼らはその場所を変更します。 – RRR

+0

私は注文リストを含むように私の答えを編集しました。それを試してください。 – ravikanth

2

ハッシュテーブルは、順序を保持していない試してみてください。注文が必要な場合は、System.Collections.Specialized.OrderedDictionaryが必要です。

3

PowerShell v3は[ordered]修飾子を使用して、順序付きハッシュテーブルをサポートします。私は、これがOrderedDictionaryを使うためのソートカットであると思う。

一般v3の機能の概要:使用してのhttp://blogs.technet.com/b/windowsserver/archive/2012/05/30/windows-server-2012-powershell-3-0-and-devops-part-2.aspx

具体的な実例は、[注文]:私はハッシュテーブルをソートしたいいけない http://arcanecode.com/2012/06/04/powershell-v3-ordered-hashtables/