PowerShell でオブジェクトにプロパティを追加する方法
- PowerShell でハッシュテーブルを使用してカスタムオブジェクトを作成する
-
PowerShell で
Add-Member
を使用してオブジェクトにプロパティを追加する -
PowerShell で
Properties.Add()
を使用してオブジェクトにプロパティを追加する -
PowerShell で
Select-Object
を使用してオブジェクトにプロパティを追加する - 結論

この記事では、PowerShell におけるオブジェクトにプロパティを追加する様々な方法について掘り下げていきます。これは、初心者から専門家に至るまでの PowerShell ユーザーにとって必須の技術です。まず、カスタムオブジェクトを作成するためのハッシュテーブルの使用について探ります。これは、シンプルでありながら強力なアプローチです。
次に、既存のオブジェクトにダイナミックにプロパティを追加するための多目的ツールである Add-Member
コマンドレットを紹介します。さらに深く掘り下げると、オブジェクトを強化するためのより詳細で制御された方法を提供する Properties.Add()
メソッドの複雑さを明らかにします。
最後に、ハッシュテーブルと組み合わせて Select-Object
を使用する方法について説明します。この手法は、一時的な修正を行い、元のオブジェクトの状態を保持するのに最適です。
この包括的なガイドは、PowerShell ユーザーがオブジェクトを特定のニーズに合わせてカスタマイズするための実用的な洞察と例を提供することを目的としています。
PowerShell でハッシュテーブルを使用してカスタムオブジェクトを作成する
オブジェクトにプロパティを追加する前に、まずオブジェクトを作成する必要があります。その方法の一つがハッシュテーブルを使用することです。
簡単に定義すると、ハッシュテーブルは PowerShell でオブジェクトのプロパティを作成して割り当てるために必要なキーまたは値のペアのセットです。この例では、単一のオブジェクトとそのプロパティを表すハッシュテーブルを作成しています。
ハッシュテーブル $sampleHashtable
が定義されたら、PSCustomObject
型アクセラレータを使用して PSCustomObject
クラスのインスタンスを作成することができます。
コードスニペットを実行すると、プログラムで定義されたプロパティを持つ PSCustomObject
型のオブジェクト $sampleHashtable
が得られます。
例 1:
$sampleObject = [PSCustomObject]@{
ID = 1
Shape = "Square"
Color = "Blue"
}
ご覧のように、$sampleHashtable
を作成した後は、Get-Service
のような組み込みの PowerShell コマンドレットから来たかのように各プロパティを参照できるようになります。
PowerShell で Add-Member
を使用してオブジェクトにプロパティを追加する
PowerShell のスクリプト言語としての多様性は、オブジェクトを動的に操作できる能力によるものであり、その好例が、ユーザーがランタイムにオブジェクトにプロパティやメソッドを追加できる Add-Member
コマンドレットです。
Add-Member
コマンドレットは、オブジェクトのインスタンスにプロパティ、メソッド、またはイベントを動的に追加するための PowerShell の基本的なツールです。この機能は、特定のニーズに応じてオブジェクトをカスタマイズしたり、追加情報でデータ構造を拡張したりするのに特に便利です。
例:
$sampleObject | Add-Member -MemberType NoteProperty -Name 'Size' -Value 'Large'
Write-Output $sampleObject
この例では、事前定義されたプロパティを持つカスタム PowerShell オブジェクト $sampleObject
を作成することから始めました。私たちの目標は、新しいプロパティを追加してこのオブジェクトを強化することでした。
Add-Member
コマンドレットを使用して、Size
という名前の NoteProperty
を $sampleObject
に、値として Large
を追加しました。このプロセスは、オブジェクトを動的に拡張する PowerShell の力を示しています。
NoteProperty
は静的値に適しているため、私たちの要件に合っています。
最後に、Write-Host
を使用して更新されたオブジェクトを印刷し、新しいプロパティの追加を効果的に示しました。
出力:
PowerShell で Properties.Add()
を使用してオブジェクトにプロパティを追加する
オブジェクトを強化するためのあまり知られていないが強力な方法が、Properties.Add()
メソッドを使用することです。このアプローチは、カスタムオブジェクトで作業する場合や、より制御された方法でオブジェクトを変更する必要がある場合に特に便利です。
Properties.Add()
メソッドは、既存の PowerShell オブジェクトにプロパティを追加する方法です。このメソッドは、基盤となる .NET
フレームワークの一部であり、一般的に使用される Add-Member
コマンドレットに比べて低レベルのアプローチを提供します。
例:
$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 で Select-Object
を使用してオブジェクトにプロパティを追加する
もう一つの手法は、ハッシュテーブル(@{}
)と組み合わせた 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 におけるオブジェクトプロパティの理解の基礎を形成しました。
その後、オブジェクトのダイナミックな強化における PowerShell スクリプティングの定番である Add-Member
コマンドレットを探求しました。Properties.Add()
メソッドの探求は、オブジェクトプロパティの制御された操作を可能にする、より深いアプローチへの窓を開きました。
最後に、ハッシュテーブルを用いた Select-Object
の使用は、非破壊的で洗練された方法でオブジェクトを拡張することを示しました。単純なものからより複雑なものまで、各メソッドは独自の目的を持ち、PowerShell ユーザーにスクリプト内でオブジェクトをカスタマイズし管理するための豊富なツールキットを提供します。
Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.
LinkedIn