Object 在PowerShell中使用多个参数实现自己的方法

Object 在PowerShell中使用多个参数实现自己的方法,object,powershell,Object,Powershell,我想用一个接受多个参数的方法创建一个自定义对象。我已经设法添加了一个使用一个参数的方法,它似乎可以工作: function createMyObject () { $instance = @{} add-member -in $instance scriptmethod Foo { param( [string]$bar = "default" ) echo "in Foo( $bar )" } $instance } $

我想用一个接受多个参数的方法创建一个自定义对象。我已经设法添加了一个使用一个参数的方法,它似乎可以工作:

function createMyObject () {
    $instance = @{}

    add-member -in $instance scriptmethod Foo {
        param( [string]$bar = "default" )
        echo "in Foo( $bar )"    
    }
    $instance
}
$myObject = createMyObject
但是每次我尝试添加一个带有两个参数的方法时,只需将另一个
[string]$secondParam
-子句添加到方法的param部分,即调用

$myObject.twoParamMethod( "firstParam", "secondParam" )
不起作用。在我的语言中,错误消息表示“不可能将索引应用于空数组”


有什么提示吗?谢谢

类似的东西似乎可以工作(至少在PowerShell v4中是如此)

可以这么说,我做到了:

[PS] skip-matches> $myObject.Baz("Junk","Stuff")
in Baz( Junk, Stuff )

[PS] skip-matches> $myObject.Baz()
in Baz( default, auto )

只是添加了一个我开始工作的版本

function Demo ([ref]$var) {
    $var.Value = 5
    $var
    }

[psobject] $changeMe = New-Object psobject
$changeMe = 0
$changeMe # Prints 0
$v = Demo([ref]$changeMe)
$changeMe # Prints 0, should print 5

若要为对象指定值,需要使用引用对象的“值”特性。另外,我实例化了一个对象实例并传递了对该实例的引用。

你说的“像这样思考”是什么意思?这正是我正在尝试的代码。你能展示一下你是如何在实例上调用这个方法的吗?@Sh4pe,我更新了我的答案,包括我是如何测试代码的。我现在还不清楚你想用这个做什么,但这让我想起了过去的一个例子。如果您对类似的实现感兴趣的话,也许可以看一下。我正在尝试定义具有多个参数的方法。。。
function Demo ([ref]$var) {
    $var.Value = 5
    $var
    }

[psobject] $changeMe = New-Object psobject
$changeMe = 0
$changeMe # Prints 0
$v = Demo([ref]$changeMe)
$changeMe # Prints 0, should print 5