命名参数在我的脚本中不起作用

时间:2012-04-14 02:01:13

标签: powershell

我正在尝试编写一个带有-Computername参数的PS函数。这是我正在使用的代码:

function Get-Foo {
param(
    [Parameter(Mandatory=$False,Position=0,ValueFromPipeline=$True,ValueFromPipelineByPropertyName=$True)]
    [string[]]$Computername = $env:COMPUTERNAME
)

但是,当我将函数作为Get-Foo -Computername BAZ运行时,它从不传递命名参数BAZ,而是始终使用$env:COMPUTERNAME的值。我通常是PowerShell的新手,绝对是编写功能的,所以希望有人可以快速看到我在这里出错的地方。我从另一个有效的脚本中剪切并修改了param行,所以我不知道为什么它在这里不起作用...谢谢。

1 个答案:

答案 0 :(得分:0)

你怎么称呼它?它可以为我设置各种类型的方式:

function Get-Foo {
    param(
        [Parameter(Mandatory=$False,Position=0,ValueFromPipeline=$True,ValueFromPipelineByPropertyName=$True)]
        [string[]]$Computername = $env:COMPUTERNAME

    )
    Write-Host $Computername
}

Get-Foo -COmputername "hi"
"hi" | Get-Foo
$obj = New-Object PsObject -Property @{ Computername='hi' }
$obj | Get-Foo

所有输出“hi”。