在 PowerShell 中初始化自定義物件陣列

Marion Paul Kenneth Mendoza 2023年1月30日
  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')

在這裡,我們可以呼叫預設的 .NET 建構函式來建立一個新的 ArrayList,然後使用 Add 運算子向其中新增專案。

[void] 資料型別之所以存在,是因為有時這些命令會丟擲可能與程式碼混淆的奇怪輸出。

Marion Paul Kenneth Mendoza avatar Marion Paul Kenneth Mendoza avatar

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

LinkedIn