我正在尝试将PowerShell类方法转换为scriptblock。
不使用类,我可以这样做:
function foo() { 'bar' }
${function:foo} # this will display: 'bar'
但是,使用类时,等效功能不起作用。例如,以下内容无效:
class FooBar {
foo() { 'bar' }
}
$foobar = new-object FooBar
${function:$foobar.foo} # doesn't work
我并不感到惊讶,上面的工作没有用,因为类方法实际上是作为脚本块实现的,而不是函数,但我似乎无法访问实现该方法的底层代码。这些尝试也不起作用:
${scriptblock:$foobar.foo}
${scriptblock:FooBar.foo}
有什么想法吗?
答案 0 :(得分:0)
您的方法是[void],转到[string]然后将调用转换为scriptblock:
class FooBar {
[string]foo() { return 'bar' }
}
$foobar = new-object FooBar
$scriptBlock = [Scriptblock]::Create('$foobar.foo()')
$(.$scriptBlock)