如何找到对象中的所有脚本方法并调用它?

时间:2018-02-21 14:34:25

标签: powershell powershell-v3.0

在一个对象中存在多个脚本方法。

function new-obj {
$Obj = [pscustomobject]@{

    Data1 = 'value1'
    Data2 = 'value2'

}

$Obj | Add-Member -MemberType ScriptMethod -Name DoSomethingWithData1 -Value { <# Code using Data1 #> }
$Obj | Add-Member -MemberType ScriptMethod -Name DoSomethingWithData2 -Value { <# Code using Data2 #> }

$obj
}

$o = New-obj 
$o.DoSomethingWithData1()
$o.DoSomethingWithData2()

我想知道所有的脚本方法并逐个调用它们(通过foreach)。有没有办法找到一个对象的所有脚本方法并调用它们?

1 个答案:

答案 0 :(得分:2)

使用Get-Member

Get-Member -InputObject $o -MemberType ScriptMethod |ForEach-Object {
    $o.$($_.Name).Invoke()
}

或通过psobject memberset访问它们:

$o.psobject.Methods |Where {$_ -is [psscriptmethod]} |ForEach-Object Invoke