2013-03-01 57 views
1

在powershell中有一種將散列表轉換爲System.Version的方法,我得到的錯誤是無法轉換類型爲「System.Collections.Hashtable」的「System.Collections.Hashtable」值「鍵入」System.Version「。將Hashtable轉換爲System.Version

例 在我的foreach循環,我添加了兩個變量鍵和值dbDictionary

$ dbDictionary.Add($ dbChangesfiles,$線)

然後我想打開將dbDictionary轉換爲System.Version,這樣我就可以將其引用到其他兩個已轉換爲System.Version的變量中。

$ dbDictionaryAsVersion = [System.Version] $ dbDictionary

任何幫助,將不勝感激

回答

1

你不能做到這一點與直接投。你必須要具體,引用包含版本值字典項:

PS> $dbDictionary = @{key1='1.2'; key2='3.4'} 
PS> [System.Version]$dbDictionary['key1'] 

Major Minor Build Revision 
----- ----- ----- -------- 
1  2  -1  -1  

如果該版本包括所有按鍵:

PS> [System.Version]($dbDictionary.Values -join '.') 

Major Minor Build Revision 
----- ----- ----- -------- 
1  2  3  4  
+0

醫生給你開,歡呼聲。 – Lewis 2013-03-01 11:46:16

+0

請注意,在hastables中缺少[PSv3中的'[[[ordered]'](http://arcanecode.com/2012/06/04/powershell-v3-ordered-hashtables/))值不能保證順序你添加它們,所以'@ {A = 1; B = 2}'可以返回'1.2'或'2.1'。 – 2013-03-09 15:55:59

+0

正確,但System.Version的默認格式將覆蓋該格式。 – 2013-03-10 12:21:17