PowerShell でオブジェクトにプロパティを追加する方法

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

この記事では、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 を使用してオブジェクトにプロパティを追加する - 出力 1

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 を使用してオブジェクトにプロパティを追加する - 出力 2

PowerShell で Select-Object を使用してオブジェクトにプロパティを追加する

もう一つの手法は、ハッシュテーブル(@{})と組み合わせた Select-Object を使用してオブジェクトにプロパティを追加することです。この方法は、元のオブジェクトを変更せずにカスタムビューを作成したり、オブジェクトを拡張したりするのに特に便利です。

Select-Object *, @{} メソッドは、既存のオブジェクトを追加のプロパティで拡張して新しいオブジェクトを作成するために使用されます。このアプローチは、表示目的やデータをエクスポートのために準備する際のオブジェクトの一時的な修正によく使用されます。

これは非破壊的であり、元のオブジェクトは変更されません。

例:

$extendedObject = $sampleObject | Select-Object *, @{
    Name       = 'Size'
    Expression = { 'Large' }
}
Write-Host ($extendedObject | Out-String)

この例では、私たちの $sampleObject を始め、新しいプロパティ Size を追加することを目標に設定しました。私たちのアプローチは元のオブジェクトを変更することなく、その整合性を維持しました。

これは、$sampleObjectSelect-Object にパイプし、すべての既存プロパティ(*)を持ち運び、ハッシュテーブルによって定義された新しいプロパティを導入するように PowerShell に指示することによって達成されました。

私たちのハッシュテーブルでは、新しいプロパティの名前 Size を明確に指定し、その値 Large を式ブロックの中に割り当てました。このアプローチは非常に洗練されており、追加のプロパティで強化された新しいオブジェクト $extendedObject を構築します。

出力:

オブジェクトにプロパティを追加するには PowerShell を使用 - 出力 3

結論

この記事では、PowerShell におけるオブジェクトにプロパティを追加するための様々な手法を通じて旅をしました。それぞれに独自の利点と応用があります。ハッシュテーブルを使用してカスタムオブジェクトを作成することから始まり、PowerShell におけるオブジェクトプロパティの理解の基礎を形成しました。

その後、オブジェクトのダイナミックな強化における PowerShell スクリプティングの定番である Add-Member コマンドレットを探求しました。Properties.Add() メソッドの探求は、オブジェクトプロパティの制御された操作を可能にする、より深いアプローチへの窓を開きました。

最後に、ハッシュテーブルを用いた Select-Object の使用は、非破壊的で洗練された方法でオブジェクトを拡張することを示しました。単純なものからより複雑なものまで、各メソッドは独自の目的を持ち、PowerShell ユーザーにスクリプト内でオブジェクトをカスタマイズし管理するための豊富なツールキットを提供します。

チュートリアルを楽しんでいますか? <a href="https://www.youtube.com/@delftstack/?sub_confirmation=1" style="color: #a94442; font-weight: bold; text-decoration: underline;">DelftStackをチャンネル登録</a> して、高品質な動画ガイドをさらに制作するためのサポートをお願いします。 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