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