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 に答える