在 PowerShell 中初始化自定义对象数组

Marion Paul Kenneth Mendoza 2023年1月30日 2022年5月16日
  1. 在 Windows PowerShell 中使用数组
  2. 在 Windows PowerShell 中访问数组
  3. 使用 Windows PowerShell 更改数组中的项目
  4. 在 Windows PowerShell 中迭代数组
  5. 使用 Windows PowerShell 在数组中创建对象
  6. 使用 Windows PowerShell 访问数组中的对象
  7. 使用 Windows PowerShell 更新数组中的对象
  8. 使用 Windows PowerShell 访问数组中的属性
  9. 在 Windows PowerShell 中创建 ArrayList
在 PowerShell 中初始化自定义对象数组

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

在这里,我们可以调用默认的 .NET 构造函数来创建一个新的 ArrayList,然后使用 Add 运算符向其中添加项目。

[void] 数据类型之所以存在,是因为有时这些命令会抛出可能与代码混淆的奇怪输出。

Marion Paul Kenneth Mendoza avatar Marion Paul Kenneth Mendoza avatar

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

LinkedIn