0

我正在尝试编写一个带有 -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行,所以我不知道为什么它在这里不起作用......谢谢。

4

1 回答 1

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”。

于 2012-04-14T02:14:16.227 回答