主題
    about_Arrays

簡短描述
    描述用於儲存資料元素的壓縮資料結構。

完整描述
    陣列是一種資料結構,用於儲存相同型別的資料元素集合。Windows PowerShell 支援
    的資料元素包括 string (字串)、int (32 位元整數)、long (64 位元整數)、bool 
    (布林)、byte (位元組) 和其他 Microsoft .NET Framework 物件型別。

建立並初始化陣列
    若要建立並初始化陣列,請對變數指定多重數值。
    儲存在陣列中的值以逗號分隔,並由指派運算子 (=) 隔開變數名稱和值。

    例如,若要建立名稱為 $A 的陣列,且內含七個數字 (int) 值 22、5、10、8、12、9
    和 80,請輸入:

        $A = 22,5,10,8,12,9,80

    您也可以使用範圍運算子 (..) 建立並初始化陣列。例如,若要建立並初始化名稱為
    "$B" 且包含數值 5 到 8 的陣列,請輸入:

        $B = 5..8

    在此情況下,$B 包含了四個數值:5、6、7 和 8。

    如果沒有指定資料型別,Windows PowerShell 會將每個陣列建立成物件陣列 (型別為
    object[])。若要判斷陣列的資料型別,請使用 GetType() 方法。例如,若要判斷
    $a 陣列的資料型別,請輸入:

        $a.gettype()

    若要建立強型別陣列,也就是只能包含一種特定型別值的陣列,請將變數轉換成陣列
    型別,例如 string[]、long[] 或 int32[]。若要轉換陣列,請在變數名稱的前面加
    上放在方括號內的陣列型別。例如,若要建立名稱為 $ia 的 32 位元整數陣列,且
    內含四個整數 (1500、2230、3350 和 4000),請輸入:

        [int32[]]$ia = 1500,2230,3350,4000

    在此情況下,$ia 陣列只能包含整數。

    您可以利用型別轉換,將陣列建立成 Microsoft .NET Framework 支援的任何型別。
    例如,Get-Process 擷取用以代表處理序的物件是屬於 System.Diagnostics.Process
    型別。
    若要建立處理序物件的強型別陣列,請輸入下列命令:

        [Diagnostics.Process[]]$zz = Get-Process

    您可以使用 Cmdlet、函數或陳述式的輸出來填入陣列。例如,下列陳述式會建立一
    個陣列,內含 "co" 字母開頭且正在目前的電腦上執行的處理序:

        $LocalProcesses = get-process co*

    如果陳述式只取得一個處理序,$LocalProcesses 變數不會是陣列。為確保命令建立
    陣列,請使用 @ 陣列子運算式運算子,如下列範例所示:

        $LocalProcesses = @(get-process co*)

    即使命令只傳回一個處理序,$LocalProcesses 變數仍是陣列。雖然這個變數只有一
    個成員,您還是可以將它當做任何其他陣列,例如可以在其中新增其他物件。
    如需詳細資訊,請參閱 about_Operators。

 
讀取陣列
    您可以使用陣列的變數名稱 (如 $A 或 $a) 來參考陣列。Windows PowerShell 沒有
    大小寫之分。

    若要顯示陣列中的所有元素,請輸入陣列名稱。例如:

	$a

    您可以使用索引 (起始位置為 0) 來參考陣列中的元素。請將索引編號放在方括號內。
    例如,若要顯示 $a 陣列中的第一個元素,請輸入:

        $a[0]

    若要顯示 $a 陣列中的第三個元素,請輸入:

        $a[2]

    負數表示從陣列結尾起算。例如,"-1" 是指陣列中的最後一個元素。若要顯示陣列中
    的最後 3 個元素,請輸入:

        $a[-3..-1]

    然而,使用這種標記法務必特別謹慎。

        $a[0..-2]

    此命令並不是指陣列中除了最後一個元素之外的所有元素;而是指陣列中的第一個、
    最後一個元素,以及倒數第二個元素。
   
    您可以使用範圍運算子來顯示陣列中所有值的子集。例如,若要顯示索引位置從 1
    到 3 的資料元素,請輸入:

        $a[1..3]

    您可以使用加法運算子 (+) 將範圍與陣列中的元素清單合併。例如,若要顯示索引
    位置為 0、2、4 到 6 的元素,請輸入:

        $a[0,2+4..6]

    若要判斷陣列中的項目數,請將範圍與陣列的 length 屬性合併。例如,若要顯示從
    索引位置 2 到陣列結尾的元素,請輸入:

        $a[2..($a.length-1)]

    length 設為 -1 是因為索引的起始位置為 0。換句話說,若陣列包含三個元素
    (1,2,3),則第三個元素的索引為 2,也就是陣列的長度減一。


    您也可以使用迴圈建構 (如 Foreach、For 和 While 迴圈) 來參考陣列中的元素。
    例如,若要使用 Foreach 迴圈來顯示 $a 陣列中的元素,請輸入:

        foreach ($element in $a) {$element}

    Foreach 迴圈會逐一查看陣列並傳回陣列中的每個值,直到到達陣列結尾為止。

    For 迴圈特別適用於以遞增計數器的方式檢查陣列中的元素。
    例如,若要使用 For 迴圈來傳回陣列中
    索引位置為偶數的元素值,請輸入:

        for ($i = 0; $i -le ($a.length - 1); $i += 2) {$a[$i]}

    使用 While 迴圈可以顯示陣列中的元素,直到定義的條件不再為 true 為止。
    例如,若要顯示 $a 陣列中陣列索引小於 4 的元素,請輸入:

        $i=0
        while($i -lt 4) {$a[$i]; $i++}

    若要了解陣列的屬性和方法,例如 Length 屬性和 SetValue 方法,請使用
    Get-Member Cmdlet 的 InputObject 參數。經由管道將陣列輸出至
    Get-Member 時,這個 Cmdlet 會顯示陣列中的物件相關資訊。
    如果使用 InputObject 參數,則會顯示陣列的相關資訊。

    若要找出 $a 陣列的屬性和方法,請輸入:

	get-member -inputobject $a


操控陣列
    您可以變更陣列中的元素、將元素新增至陣列,以及將兩個陣列中的值合併成第三個
    陣列。

    若要變更陣列中特定元素的值,請指定要變更的陣列名稱和元素索引,然後使用指派
    運算子 (=) 為元素指定新值。例如,若要將 $a 陣列中第二個項目的值 (索引位
    置 1) 變更為 10,請輸入:

        $a[1] = 10

    您也可以使用陣列的 SetValue 方法變更值。下列範例會將 $a 陣列的第二個值 (索
    引位置 1) 變更為 500:

        $a.SetValue(500,1)

    您可以使用 += 運算子為現有的陣列附加元素。
    此運算子會增加現有值。若對陣列的元素使用此運算子,將會增加該元素的值。若對
    陣列本身使用此運算子,則會將值附加到陣列。例如,若要將值為 200 的元素附加
    到 $a 陣列,請輸入:

        $a += 200

    要刪除陣列的元素並不容易,但您可選取現有陣列中的元素,另外建立新陣列。
    例如,若要選取 $a 陣列中除了索引位置為 2 的所有元素,
    另外建立 $t 陣列,請輸入:

        $t = $a[0,1 + 3..($a.length - 1)]

    若要將兩個陣列合併成單一陣列,請使用加法運算子 (+)。下列範例會建立兩個陣
    列,然後合併兩者,再顯示合併後的陣列。

        $x = 1,3
        $y = 5,9
        $z = $x + $y

    在此情況下,$z 陣列包含了 1、3、5 和 9。

    若要刪除陣列,請使用 Remove-Item Cmdlet 刪除含有該陣列的變數。下列命令會指
    定刪除 Variable: 
    磁碟機中的 "a" 元素。

        remove-item variable:a

    (如需 Variable: 磁碟機的詳細資訊,請參閱 Variable 提供者說明主題)。


請參閱
    about_Assignment_Operators
    about_Hash_Tables
    about_Operators
    about_For
    about_Foreach
    about_While




目錄