主題 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