如何在 PowerShell 中为对象添加属性
- 使用哈希表在 PowerShell 中创建自定义对象
-
使用
Add-Member
向 PowerShell 中的对象添加属性 -
使用
Properties.Add()
向 PowerShell 中的对象添加属性 -
使用
Select-Object
向 PowerShell 中的对象添加属性 - 结论

本文深入探讨了在 PowerShell 中向对象添加属性的各种方法,这是从初学者到专家的 PowerShell 用户的基本技能。我们首先探讨了使用哈希表创建自定义对象,这是一种简单而强大的方法。
随后,我们介绍了 Add-Member
cmdlet,这是一个多功能工具,用于动态地向现有对象附加属性。随着我们进一步深入,我们揭示了 Properties.Add()
方法的复杂性,提供了一种更细致和受控的方式来增强对象。
最后,我们讨论了将 Select-Object
与哈希表结合使用,这种方法非常适合临时修改并保留原始对象的状态。
这本综合指南旨在提供实用的见解和示例,帮助 PowerShell 用户根据自己的特定需求调整对象。
使用哈希表在 PowerShell 中创建自定义对象
在向对象添加属性之前,我们必须先创建一个对象。一种方法是通过哈希表。
简要定义,哈希表是我们需要在 PowerShell 中创建并分配对象属性的一组键或值对。在示例中,我们创建了一个代表单个对象及其属性的哈希表。
一旦定义了哈希表 $sampleHashtable
,我们可以使用 PSCustomObject
类型加速器来创建 PSCustomObject
类的实例。
在运行代码片段后,我们将获得一个名为 $sampleHashtable
的 PSCustomObject
类型对象,具有在程序中定义的属性。
示例 1:
$sampleObject = [PSCustomObject]@{
ID = 1
Shape = "Square"
Color = "Blue"
}
正如我们所见,在创建 $sampleHashtable
之后,我们将能够引用每个属性,就像它来自内置的 PowerShell cmdlet(如 Get-Service
)一样。
使用 Add-Member
向 PowerShell 中的对象添加属性
PowerShell 作为脚本语言的多样性部分源于其动态操作对象的能力。一个典型的例子是 Add-Member
cmdlet,它允许用户在运行时向对象添加属性和方法。
Add-Member
cmdlet 是 PowerShell 中动态添加成员(例如属性、方法或事件)到对象实例的重要工具。这个功能对于根据特定需求定制对象或为数据结构增加额外信息非常有用。
示例:
$sampleObject | Add-Member -MemberType NoteProperty -Name 'Size' -Value 'Large'
Write-Output $sampleObject
在这个例子中,我们首先创建了 $sampleObject
,这是一个具有预定义属性的自定义 PowerShell 对象。我们的目标是通过添加一个新属性来增强该对象。
使用 Add-Member
cmdlet,我们向 $sampleObject
附加了一个名为 Size
、值为 Large
的 NoteProperty
。这个过程展示了 PowerShell 在动态扩展对象方面的强大能力。
选择 NoteProperty
是因为它适合静态值,这正是我们的要求。
最后,我们使用 Write-Host
打印更新后的对象,有效地演示了新属性的添加。
输出:
使用 Properties.Add()
向 PowerShell 中的对象添加属性
一个不太为人所知但强大的方法是使用 Properties.Add()
方法来增强对象。当处理自定义对象时或者您需要以更受控的方式修改对象时,这种方法特别有用。
Properties.Add()
方法是一种向现有 PowerShell 对象添加属性的方法。这个方法是底层 .NET
框架的一部分,提供了一种相对于更常用的 Add-Member
cmdlet 的低级方法。
示例:
$sampleObject.psobject.Properties.Add([PSNoteProperty]::new('Size', 'Large'))
Write-Host ($sampleObject | Out-String)
在这个例子中,我们创建了 $sampleObject
,这是一个具有预定义属性的对象。
我们的目标是通过添加一个名为 Size
的新属性来增强它。为此,我们利用了 .psobject.Properties.Add([PSNoteProperty]::new())
方法。
这个方法比 Add-Member
更微妙。它涉及直接创建一个新的 PSNoteProperty
对象,然后将其添加到对象的属性集合中。
最后,使用 Write-Host
,我们输出更新后的对象以确认新属性的添加。
输出:
使用 Select-Object
向 PowerShell 中的对象添加属性
另一种技术涉及使用 Select-Object
与哈希表(@{}
)结合使用,以向对象添加属性。这种方法在创建自定义视图或扩展对象而不修改原始对象时特别有用。
Select-Object *, @{}
方法用于通过用附加属性扩展现有对象来创建新对象。这种方法通常用于对象的临时修改,例如用于显示目的或准备导出数据时。
它是非破坏性的,这意味着原始对象保持不变。
示例:
$extendedObject = $sampleObject | Select-Object *, @{
Name = 'Size'
Expression = { 'Large' }
}
Write-Host ($extendedObject | Out-String)
在这个例子中,我们从 $sampleObject
开始,并设定目标,以增强它的新属性 Size
。我们的方法并未涉及更改原始对象,保持其完整性。
我们通过将 $sampleObject
传递给 Select-Object
来实现这一目标,有效地指示 PowerShell 传递所有现有属性(*
)并引入一个由哈希表定义的新属性。
在我们的哈希表中,我们清晰地指定了新属性的名称 Size
,并在表达式块中分配了它的值 Large
。这种方法尤其优雅,因为它构建了一个名为 $extendedObject
的新对象,增加了附加属性。
输出:
结论
在本文中,我们探讨了在 PowerShell 中向对象添加属性的各种方法,每种方法都有其独特的优势和应用。从使用哈希表创建自定义对象开始,我们为理解 PowerShell 中的对象属性打下了基础。
然后,我们探索了 Add-Member
cmdlet,这是 PowerShell 脚本中的一个重要工具,用于动态增强对象。对 Properties.Add()
方法的探索打开了一扇更深入的方法的窗口,允许对对象属性进行受控操作。
最后,使用带哈希表的 Select-Object
展示了一种非破坏性和优雅的方式来扩展对象。每种方法,从简单到复杂,各自承担独特的用途,为 PowerShell 用户提供了丰富的工具包,以在他们的脚本中定制和管理对象。
Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.
LinkedIn