主题
    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]

    若要确定数组中有多少项,请将范围与数组的长度属性组合在一起。例如,若要显示从索引位置 2 到数
    组末尾的元素,请键入:

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

    长度设置为 -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。例如,若要在数组索引小于 4 时
    显示 $a 数组中的元素,请键入:

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

    若要了解数组的属性和方法(如 Length 属性和 SetValue 方法),请使用 Get-Member cmdlet 的 
    InputObject 参数。将数组通过管道传递给 Get-Member 时,它将显示有关数组中的对象的信息。
    使用 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: 驱动器的详细信息,请键入“get-help variable-psprovider”。)


另请参阅
    about_Assignment_Operators
    about_Hash_Tables
    about_Operators
    about_For
    about_Foreach
    about_While




目录