在一个对象中存在多个脚本方法。
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)。有没有办法找到一个对象的所有脚本方法并调用它们?
答案 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