如何在 PowerShell 中初始化自定义对象的数组
- 在 Windows PowerShell 中使用数组
- 在 Windows PowerShell 中访问数组
- 使用 Windows PowerShell 更改数组中的项
- 在 Windows PowerShell 中迭代数组
- 使用 Windows PowerShell 创建数组中的对象
- 使用 Windows PowerShell 访问数组中的对象
- 使用 Windows PowerShell 更新数组中的对象
- 使用 Windows PowerShell 访问数组中的属性
- 在 Windows PowerShell 中创建 ArrayList

数组是 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')