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
Copyright © MURA
All rights reserved.