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

时间:2014-02-10 18:24:50

标签: object powershell

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

function createMyObject () {
    $instance = @{}

    add-member -in $instance scriptmethod Foo {
        param( [string]$bar = "default" )
        echo "in Foo( $bar )"    
    }
    $instance
}
$myObject = createMyObject

但每次我尝试通过简单地在方法的param-section中添加另一个[string]$secondParam - 子句来添加带有两个参数的方法时,调用

$myObject.twoParamMethod( "firstParam", "secondParam" )

不起作用。我语言中的错误消息表示“无法将索引应用于NULL数组”。

任何提示?谢谢!

2 个答案:

答案 0 :(得分:5)

这样的东西似乎有用(至少在PowerShell v4中)......

add-member -in $instance scriptmethod Baz {
    param( [string]$bar = "default", [string]$qux = "auto" )
    echo "in Baz( $bar, $qux )"
}

要打电话,我做了:

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

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

答案 1 :(得分:0)

只需添加我正在使用的版本。

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

要为对象指定值,需要使用引用对象的Value属性。此外,我实例化一个对象实例并传递对它的引用。