如何在 PowerShell 中將數組傳遞給函數

  1. PowerShell 數組
  2. 向 PowerShell 函數傳遞數組
  3. 結論
如何在 PowerShell 中將數組傳遞給函數

在許多程式語言中,包括 PowerShell,數組是基本的數據結構。它們允許您高效地存儲值的集合,使其成為 PowerShell 腳本中各種任務的重要工具。

本文將重點介紹數組以及在 PowerShell 中向函數傳遞數組的約定。

PowerShell 數組

PowerShell 數組與 Java、Python、C# 等通用程式語言中的數組沒有區別。它們提供了持有固定大小的值或任何數據類型對象的能力。

語法:

$intTypeArray = 34, 100, 1000, 45, 455, 1

在下面的示例中,我們將使用內建的 GetType() 方法來檢查變量 $intTypeArray 的類型。

檢查變量 1 的類型

如預期的那樣,基本類型是 System.Array。因為我們沒有明確指定這個數組的數據類型,所以 PowerShell 引擎已將其創建為對象數組。

有趣的是,PowerShell 數組可以在單個數組中容納多種不同類型的元素,如下面的代碼片段所示。

代碼:

$mixedElementArray = 200, 'stringElement', 12.555, 'hello'

輸出:

檢查變數 2 的類型

如您所見,默認的 PowerShell 數組基於 Object[] 類型。

在 PowerShell 中,每個值或對象都繼承自 Object。因此,任何值或對象都可以分配給默認的 PowerShell 數組。

除了默認數組,PowerShell 還提供了一種稱為強類型數組的變體。這些數組專門容納特定數據類型的集合。

當我們創建強類型數組時,需要將引用變量類型轉換為特定的數組類型,如 int32[]string[] 等。

[string[]]$stringTypeArray = 'tesla', 'mecedes', 'audi', 'lambo'

讓我們檢查 $stringTypeArray 的類型。

$stringTypeArray.GetType()

輸出:

檢查變量 3 的類型

向 PowerShell 函數傳遞數組

在 PowerShell 中,強類型數組被推薦在您的 PowerShell 程序中使用,因為它具有類型安全性。每當您需要將已定義的數組傳遞給函數時,以下語法應該可以正常工作。

語法:

function <function_identifier>([<data_type>[]]$<parameter_name>)
{

}

在這個語法中:

  • function:表示用於啟動 PowerShell 中函數定義的關鍵字。
  • <function_name>:表示函數的名稱。
  • [<data_type>[]]:指定參數的數據類型,允許您在函數內部使用指定數據類型的數組。
  • $<parameter_name>:作為函數內部參數的名稱。

通過這種方式,您可以輕鬆地將數組傳遞給函數。為了說明這一點,讓我們首先定義一個名為 letsPassAnArray 的 PowerShell 函數。

代碼:

function letsPassAnArray([string[]]$stringList) {
    foreach ($arrEle in $stringList) {
        Write-Host $arrEle
    }
}

在這個示例中,我們定義了一個名為 letsPassAnArray 的 PowerShell 函數,該函數有一個名為 $stringList 的參數。然後,我們開始一個 foreach 循環來迭代 $stringList 數組中的每個元素 ($arrEle)。

在循環內,我們將每個數組元素寫入控制台。為了測試該函數,我們創建一個名為 $stringArr 的字符串類型數組,其中包含元素 'Apple''Orange''Grapes'

代碼:

[string[]]$stringArr = 'Apple', 'Orange', 'Grapes'
letsPassAnArray($stringArr)

最後,我們調用 letsPassAnArray 函數,並將 $stringArr 數組作為參數傳遞給它,使該函數迭代並打印數組的每個元素。

輸出:

將數組傳遞給 PowerShell 函數

結論

在 PowerShell 中,理解數組及如何將它們傳遞給函數對有效且有組織的腳本編寫至關重要。無論您是處理可以容納各種數據類型的通用數組,還是為了類型安全性而使用的強類型數組,掌握數組操作將使您能夠編寫更有效的 PowerShell 腳本。

Enjoying our tutorials? Subscribe to DelftStack on YouTube to support us in creating more high-quality video guides. Subscribe
Migel Hewage Nimesha avatar Migel Hewage Nimesha avatar

Nimesha is a Full-stack Software Engineer for more than five years, he loves technology, as technology has the power to solve our many problems within just a minute. He have been contributing to various projects over the last 5+ years and working with almost all the so-called 03 tiers(DB, M-Tier, and Client). Recently, he has started working with DevOps technologies such as Azure administration, Kubernetes, Terraform automation, and Bash scripting as well.

相關文章 - PowerShell Array