如何在 PowerShell 中創建陣列、哈希表和字典

  1. 在 PowerShell 中創建數組
  2. 在 PowerShell 中使用哈希表
  3. 在 PowerShell 中創建有序字典
  4. 哈希表與有序字典:關鍵區別
  5. 現實世界的用例
  6. 結論
  7. 常見問題 (FAQ)
如何在 PowerShell 中創建陣列、哈希表和字典

PowerShell 提供各種數據結構以有效地存儲和操作數據。數組、哈希表和有序字典是基本結構,有助於在腳本和自動化任務中處理不同類型的數據集合。

了解如何使用這些數據結構可以更好地組織、有效檢索和結構化數據管理在 PowerShell 腳本中的使用。在本指南中,我們將探討如何:

  • 在 PowerShell 中創建和操作數組
  • 使用哈希表進行鍵值存儲
  • 使用有序字典來維持數據順序
  • 比較哈希表和有序字典
  • 為每種結構實施現實世界的用例

在本教程結束時,您將對如何在 PowerShell 中處理這些數據結構有一個堅實的理解。

在 PowerShell 中創建數組

PowerShell 中的數組是什麼?

在 PowerShell 中,數組是存儲在單個變量中的多個值的集合。數組允許您有效地存儲和操作數據列表。

使用 @() 聲明數組

在 PowerShell 中初始化數組的正確方法是使用 @() 語法。以下是如何創建一個包含三個字符串元素的數組:

$data = @('apple', 'ball', 'cat')

輸出:

apple
ball
cat

創建空數組

如果您需要一個稍後將填充的空數組,請使用以下語法聲明:

$data = @()

獲取數組的數據類型

您可以使用 .GetType() 方法檢查數組的類型:

$data.GetType()

輸出:

IsPublic IsSerial Name       BaseType    
-------- -------- ----       --------    
True     True     Object[]   System.Array

訪問數組中的元素

數組是零索引的,這意味著第一個項目位於索引 [0]

$data[0]  # Retrieves the first item

輸出:

apple

要動態訪問數組的最後一個元素,可以使用:

$data[-1]

輸出:

cat

向數組中添加項目

由於 PowerShell 數組是不可變的,您不能像在 Python 或 JavaScript 中那樣直接添加項目。相反,您需要創建一個包含額外項目的新數組:

$data += 'dog'

輸出:

apple
ball
cat
dog

從數組中刪除項目

要刪除一個項目,使用數組過濾:

$data = $data | Where-Object { $_ -ne 'ball' }

輸出:

apple
cat
dog

在 PowerShell 中使用哈希表

哈希表是什麼?

哈希表是一種鍵值存儲結構,它允許您有效地使用唯一鍵來檢索值。哈希表也被稱為字典或關聯數組。

創建哈希表

在 PowerShell 中聲明哈希表,使用 @{} 語法:

$hash = @{Fruit = "Apple"; Color = "Red"; Count = 5 }

查看哈希表內容

$hash

輸出:

Name   Value
----   -----
Fruit  Apple
Color  Red
Count  5

訪問哈希表中的值

您可以使用其鍵訪問值:

$hash['Color']

輸出:

Red

另外,您也可以使用點符號:

$hash.Count

輸出:

5

在哈希表中添加和刪除項目

添加新的鍵值對

$hash['Shape'] = 'Round'

刪除鍵值對

$hash.Remove('Color')

在 PowerShell 中創建有序字典

為什麼使用有序字典?

哈希表不維護插入順序,但有序字典會。當數據的順序很重要時,這是很有用的。

聲明有序字典

使用 [ordered] 特性:

$dict = [ordered]@{Fruit = "Apple"; Color = "Red"; Count = 5 }

訪問有序字典元素

$dict['Fruit']

輸出:

Apple

維持順序

如果您多次打印普通的哈希表,順序可能會改變。然而,使用有序字典時,順序保持一致。

$dict

輸出:

Name   Value
----   -----
Fruit  Apple
Color  Red
Count  5

哈希表與有序字典:關鍵區別

特徵 哈希表 有序字典
是否維持順序? ❌ 不 ✅ 是
訪問速度 ✅ 快 ✅ 快
最佳適用於 隨機訪問數據 保留鍵順序

現實世界的用例

用例 1:存儲用戶信息(有序字典示例)

$user = [ordered]@{
    Name = "John Doe"
    Email = "johndoe@example.com"
    Role = "Admin"
}

用例 2:計算單詞出現次數(哈希表示例)

$text = "apple banana apple orange apple banana"
$wordCount = @{}

$text.Split() | ForEach-Object {
    if ($wordCount.ContainsKey($_)) {
        $wordCount[$_] += 1
    } else {
        $wordCount[$_] = 1
    }
}

$wordCount

輸出:

Name   Value
----   -----
apple  3
banana 2
orange 1

結論

PowerShell 提供數組、哈希表和有序字典以有效地存儲和操作數據。

  • 在處理值列表時使用數組 (@())。
  • 使用哈希表 (@{}) 進行無順序約束的鍵值存儲。
  • 當保留插入順序至關重要時,使用有序字典 ([ordered]@{})。

掌握這些數據結構將提高您在 PowerShell 中的腳本效率和自動化能力。🚀

常見問題 (FAQ)

哈希表和字典在 PowerShell 中有什麼區別?

在 PowerShell 中,哈希表和字典通常可以互換使用。然而,字典是 .NET 框架的一部分(System.Collections.Hashtable),而 PowerShell 中的哈希表(@{})是內建的,並且針對 PowerShell 腳本進行了優化。

我該如何向 PowerShell 數組添加或刪除項目?

由於 PowerShell 中的數組是不可變的,您不能直接修改它們。相反,請使用:

  • 添加一個項目:$array += 'newItem'
  • 刪除一個項目:$array = $array | Where-Object { $_ -ne 'itemToRemove' }

我可以在 PowerShell 中對哈希表進行排序嗎?

是的,您可以使用有序字典 ([ordered]@{}) 或通過以下方式將哈希表轉換為有序格式:

$sortedHash = $hash.GetEnumerator() | Sort-Object Name
$sortedHash

這確保鍵以字母順序顯示。

Enjoying our tutorials? Subscribe to DelftStack on YouTube to support us in creating more high-quality video guides. Subscribe
作者: Rohan Timalsina
Rohan Timalsina avatar Rohan Timalsina avatar

Rohan is a learner, problem solver, and web developer. He loves to write and share his understanding.

LinkedIn Website

相關文章 - PowerShell Array