如何使用属性和方法

时间:2017-05-10 13:29:04

标签: powershell object methods

我尝试用这样的自定义方法定义一个对象,但我的语法是错误的:

$Obj = [pscustomobject]@{
    A = @(5,6,7)
    B = 9
    Len_A = {return $this.A.count;}
    Sum_A = {return (SumOf $this.A);}
}

用于:

$Obj.Len_A()       # return 3
$Obj.A += @(8,9)   # @(5,6,7,8,9)
$Obj.Len_A()       # return 5

2 个答案:

答案 0 :(得分:3)

您可能希望使用Add-Member cmdlet:

$Obj = [pscustomobject]@{
    A = @(5,6,7)
    B = 9
}

$Obj | Add-Member -MemberType ScriptMethod -Name "Len_A" -Force -Value {
    $this.A.count 
} 

现在您可以使用以下方法调用该方法:

$Obj.Len_A()

答案 1 :(得分:2)

您没有提到您正在使用的powershell版本。如果你想要面向对象使用这样的类。

class CustomClass {
     $A = @(5,6,7)
     $B = 9
     [int] Len_A(){return $this.A.Count}
     [int] Sum_A(){
       $sum = 0
       $this.A | ForEach-Object {$sum += $_}
      return $sum
     }
}

$c = New-Object CustomClass
$s = $c.Sum_A()
$l = $c.Len_A()