哈希表(hashtable)有時候也被稱爲:「關聯數組」或「字典」。哈希表能夠稱得上是計算機科學中最重要的數據結構之一,例如:在計算機操做系統、數據庫系統、編譯器、加密算法等計算機底層程序中,哈希表都發揮着重要的做用。哈希表提供以近乎常數時間開銷,根據數據的鍵(key)來索引到該鍵對應的值(value)。就好像使用工具書同樣,咱們老是經過目錄中項的名稱和頁碼,來檢索咱們關心的知識或信息。算法
在傳統的Unix環境中,awk程序內置的關聯數組,爲數據處理提供了便捷的手段。所以掌握哈希表類型,可使您在解決工做中的問題時候,更加駕輕就熟。數據庫
如何聲明一個哈希表對象?哈希表的建立是很是簡單的,請看以下示例:數組
PS C:/> $hash = @{}服務器
PS C:/> $hash.GetType().FullName數據結構
System.Collections.Hashtableide
PS C:/> $hash.Count工具
0加密
示例中首先使用了「@{}」語法初始化了一個空的哈希表,並將其保存在變量$hash中。接下來驗證了該對象的類型,並查看了哈希表中元素的數量,因爲只是初始化了一個空哈希表,因此返回結果是0。若是在初始化時,須要添加一些鍵值對到哈希表的話,應該使用什麼樣的語法呢?咱們只要在「@{」和「}」標記之間輸入以分號「;」分隔的鍵值對便可,鍵值對的格式:<key> = <value>。請看以下示例:spa
PS C:/> $hash = @{ "Computer Name" = "AD Server";操作系統
>> "Administrator" = "Ma Tao", "Spider Man";
>> "OS" = "Windows 2008";
>> "Installed Date" = Get-Date;
>> "Disk Size" = 5000GB
>> }
>>
PS C:/> $hash
Name Value
---- -----
OS Windows 2008
Disk Size 5368709120000
Installed Date 2008/7/31 23:09:57
Computer Name AD Server
Administrator {Ma Tao, Spider Man}
這是一個記錄服務器信息的哈希表,哈希表的全部信息都已經能夠看到。在建立哈希表的時候,鍵「Administrator」對應的值是一個數組的引用;相似的還有安裝日期是命令Get-Date返回的對象。經過這個例子,咱們能夠了解到PowerShell中的哈希表能夠很方便地存儲各式各樣的數據信息。可是咱們應該如何去訪問哈希表中的元素呢?在PowerShell中,有兩種便捷的辦法獲取哈希表中存儲的信息。第一種辦法是相似訪問對象屬性的方法:
PS C:/> $hash.os
Windows 2008
PS C:/> $hash.Administrator
Ma Tao
Spider Man
PS C:/> $hash."Computer Name"
AD Server
這種方法很方便,只須要在點號後面輸入鍵的名稱便可。若是鍵值包含空白字符的話,能夠經過使用引號來訪問該鍵值對應的信息。若是但願可以同時索引多個鍵的值,這種相似訪問屬性的方法就沒法完成了。不過PowerShell提供了另外一種辦法,它相似於數組訪問的形式,使得咱們能夠同時返回哈希表中的幾個元素。例如:
PS C:/> $hash["Disk Size", "Installed Date"]
5368709120000
2008年7月31日 23:09:57