Home > Windows にまつわる e.t.c.

プロパティだけの PowerShell Class の使いどころ


PowerShell v4 以前でカスタムオブジェクトを作ろうとした場合、New-Object PSObject でオブジェクトを作るのが常套手段でした。

 

PowerShell v4 以前のカスタムオブジェクト

こんな感じですね。

# カスタムオブジェクトの配列
$Datas = @()

# カスタムオブジェクト作成
$Data = New-Object PSObject | Select-Object AAA, BBB, CCC

# カスタムオブジェクトへの値設定
$Data.AAA = "Data-aaa"
$Data.BBB = "Data-bbb"
$Data.CCC = "Data-ccc"

# カスタムオブジェクトを配列に加える
$Datas += $Data

 

プロパティだけの class を使ったカスタムオブジェクト

PowerShell v5 からクラスがサポートされ、クラスを使うと簡単にカスタムオブジェクトを作ることができます。

# カスタムオブジェクトの配列
$Datas = @()

# カスタムオブジェクトクラス
class CustomObject {
    [string] $AAA
    [string] $BBB
    [string] $CCC
}

# カスタムオブジェクト作成
$Data = New-Object CustomObject

# カスタムオブジェクトへの値設定
$Data.AAA = "Data-aaa"
$Data.BBB = "Data-bbb"
$Data.CCC = "Data-ccc"

# カスタムオブジェクトを配列に加える
$Datas += $Data

 

プロパティだけの class を別 class のプロパティとして使用する

プロパティだけの CustomObject class を別のクラスで使用する場合こんな感じで使います。

# カスタムオブジェクトクラス
class CustomObject {
    [string] $AAA
    [string] $BBB
    [string] $CCC
}

# カスタムオブジェクトクラスを使用する class
class CustomClass {
    
    # カスタムオブジェクトの配列
    [CustomObject[]] $Datas
    
    # カスタムオブジェクト配列に値をセットするメソッド
    [void] SetData( [string] $A, [string] $B, [string] $C ){

        # カスタムオブジェクト
        $Data = New-Object CustomObject

        # カスタムオブジェクトへの値設定
        $Data.AAA = $A
        $Data.BBB = $B
        $Data.CCC = $C

        # カスタムオブジェクトを配列に加える
        $this.Datas += $Data
    }
}

# インスタンス化
$Object = New-Object CustomClass

# 値設定
$Object.SetData( "Data-aaa", "Data-bbb", "Data-ccc")

# カスタムオブジェクトの値を表示
$Object.Datas

 

class プロパティの直接変更は class の独立性を損なうのであまりお勧めできないのですが、PowerShell 5 Class は全てのプロパティが public である仕様利用してプロパティだけのクラスの場合は直接値をハンドリングすると便利に使えます。

 

関連情報

PowerShell Class
http://www.vwnet.jp/Windows/etc.asp#PowerShell_Class

 

 

back.gif (1980 バイト)

home.gif (1907 バイト)

Copyright © MURA All rights reserved.