如何在 PowerShell 中為對象添加屬性

  1. 使用雜湊表在 PowerShell 中創建自定義物件
  2. 使用 Add-Member 在 PowerShell 中向物件添加屬性
  3. 使用 Properties.Add() 在 PowerShell 中向物件添加屬性
  4. 使用 Select-Object 在 PowerShell 中向物件添加屬性
  5. 結論
如何在 PowerShell 中為對象添加屬性

本文深入探討了在 PowerShell 中向物件添加屬性的各種方法,這對於從初學者到專家的 PowerShell 使用者來說都是一項重要的技術。我們首先探索了使用雜湊表來創建自定義物件,這是一種簡單而強大的方法。

接下來,我們介紹了 Add-Member cmdlet,這是一個多功能工具,可動態地將屬性附加到現有物件上。隨著我們的深入探討,我們揭示了 Properties.Add() 方法的複雜性,提供了一種更細緻和可控的增強物件的方法。

最後,我們討論了結合雜湊表使用 Select-Object 的方法,這是一種非常適合臨時修改並保持原始物件狀態的方法。

這本綜合指南旨在提供實用的見解和範例,幫助 PowerShell 使用者根據其特定需求調整物件。

使用雜湊表在 PowerShell 中創建自定義物件

在向物件添加屬性之前,我們必須先創建一個物件。創建物件的一種方法是通過雜湊表。

簡單定義一下,雜湊表是鍵或值對的集合,我們需要這些集合來創建和指定物件的屬性。在這個例子中,我們正在創建一個代表單個物件及其屬性的雜湊表。

一旦定義了雜湊表 $sampleHashtable,我們就可以使用 PSCustomObject 類型加速器來創建 PSCustomObject 類的實例。

運行代碼片段後,我們將獲得一個類型為 PSCustomObject 的物件 $sampleHashtable,其屬性在程序中被定義。

範例 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 附加了一個名為 SizeNoteProperty,其值為 Large。這個過程展示了 PowerShell 在動態擴展物件方面的強大。

選擇 NoteProperty 是因為它適合靜態值,這正是我們的需求。

最後,我們使用 Write-Host 打印更新後的物件,有效地展示了新屬性的添加。

輸出:

使用 PowerShell 向對象添加屬性 - 輸出 1

使用 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,我們輸出更新後的物件以確認新屬性的添加。

輸出:

使用 PowerShell 將屬性添加到物件 - 輸出 2

使用 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 向物件添加屬性 - 輸出 3

結論

在這篇文章中,我們探索了在 PowerShell 中向物件添加屬性的各種方法,每種方法都有其獨特的優勢和應用。從使用雜湊表創建自定義物件開始,我們為理解 PowerShell 中的物件屬性奠定了基礎。

然後,我們探討了 Add-Member cmdlet,這是一個在 PowerShell 腳本中動態增強物件的基本工具。Properties.Add() 方法的探索開啟了一扇通往更深入的方法的大門,允許對物件屬性進行可控的操作。

最後,使用 Select-Object 和雜湊表展示了一種非破壞性且優雅的擴展物件方式。每種方法,從簡單的到複雜的,均有其獨特用途,為 PowerShell 使用者提供了豐富的工具包,用於在其腳本中自定義和管理物件。

Enjoying our tutorials? Subscribe to DelftStack on YouTube to support us in creating more high-quality video guides. Subscribe
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

相關文章 - PowerShell Object