如何在 PowerShell 中初始化自訂物件的陣列

  1. 在 Windows PowerShell 中使用陣列
  2. 在 Windows PowerShell 中訪問陣列
  3. 使用 Windows PowerShell 更改陣列中的項目
  4. 在 Windows PowerShell 中迭代陣列
  5. 使用 Windows PowerShell 在陣列中創建對象
  6. 使用 Windows PowerShell 訪問陣列中的對象
  7. 使用 Windows PowerShell 更新陣列中的對象
  8. 使用 Windows PowerShell 訪問陣列中的屬性
  9. 在 Windows PowerShell 中創建 ArrayList
如何在 PowerShell 中初始化自訂物件的陣列

陣列是 Windows PowerShell 的一個基本功能。這使得能夠攝取、操作和輸出準確的數據結構(而不僅僅是原始字符串)。

這一能力使得 PowerShell 與其他腳本語言不同且更具實用性。

本文將解釋什麼是陣列,如何在 Windows PowerShell 中創建陣列,然後使用基本功能來操作它們。

在 Windows PowerShell 中使用陣列

Windows PowerShell 中的陣列可以包含一個或多個項目。陣列可以是一個字符串、一個整數、一個對象或另一個陣列。

每個項目都有一個索引,從 0 開始並按項目遍歷。

創建陣列的基本語法是 @()

$data = @()

我們可以在 @ 後的括號內放入值:

$data = @('Zero', 'One', 'Two', 'Three')

要顯示陣列中的項目,我們可以調用命名變量:

$data

輸出:

Zero
One
Two
Three

在 Windows PowerShell 中訪問陣列

現在我們有了陣列,我們想要訪問項目。有幾種方法可以做到這一點。

第一種方法是使用陣列中項目的索引。如我們所提到,索引從 0 開始。

因此,我們需要告訴 Windows PowerShell 查看索引為零的項目,以便檢索我們陣列中的第一個項目。

$data[0]

這種語法將返回字符串 zero,因為這是我們放入陣列的第一個字符串。我們也可以擴展這段代碼,透過在同一命令中放入多個索引來返回同一陣列中的多個項目。

$data[0, 2, 3]

輸出:

Zero
Two
Three

使用 Windows PowerShell 更改陣列中的項目

我們可以使用相同的方法來更新陣列中的項目。例如,要更新索引為 2 的項目,我們可以運行:

$data[2] = 'second'

這種方法使我們可以直接訪問陣列內的項目。

在 Windows PowerShell 中迭代陣列

Windows PowerShell 最強大的特性之一是在陣列中的所有項目上執行相同的操作。最基本的方法是使用管道字符(|)。

例如,若要為我們陣列中的每個項目添加描述,我們可以使用這條命令:

$data | ForEach-Object { "Item: [$PSItem]" }

這條命令告訴 PowerShell 腳本環境一次處理 $data 陣列中的一個項目。

使用 Windows PowerShell 在陣列中創建對象

我們可以使用相同的字符串方法創建一個充滿自定義對象的陣列,使用陣列(@())函數。例如,要製作一個員工的測試列表,我們可以使用:

$data = @(
    [pscustomobject]@{FirstName = 'Kevin'; LastName = 'Marquette' }
    [pscustomobject]@{FirstName = 'John'; LastName = 'Doe' }
)

大多數 PowerShell 原生命令將在您為它們分配變量以進行操作時返回一個充滿此類對象的陣列。

使用 Windows PowerShell 訪問陣列中的對象

我們之前運行的訪問單個數據片段的過程同樣可以用於包含對象的陣列。

$data[0]

輸出:

FirstName LastName
-----     ----
John     Hampton

或者,我們可以通過在同一命令中指定希望調用的屬性,來獲得單個對象的屬性。

$data[0].FirstName

輸出:

John

使用 Windows PowerShell 更新陣列中的對象

這種精確的語法允許我們更新陣列中對象的單個屬性。

$data[0].FirstName = 'Jay'

使用 Windows PowerShell 訪問陣列中的屬性

在大多數編程和腳本語言中,我們需要使用迭代方法來訪問各個對象中的所有屬性。我們在 Windows PowerShell 中也可以這樣做。

$data | ForEach-Object { $_.LastName }

這種方法將返回我們陣列中所有 LastName 屬性的列表,但在計算上代價高昂且每次想查看此數據時都難以編寫。因此,PowerShell 提供了一個快捷方式。

$data.LastName

您將看到相同的列表。PowerShell 按順序處理每個對象,就像之前一樣,但它將這種複雜性隱藏了起來。

在 Windows PowerShell 中創建 ArrayList

向陣列添加項目可能會很具挑戰性。然而,ArrayList 在這方面處理得更優雅,是一種不同類型的集合。

不過,我們必須使用 .NET 框架來使用這種集合類型。要創建 ArrayList 並向其中添加項目,運行以下命令:

$myarray = [System.Collections.ArrayList]::new()

[void]$myArray.Add('Value')