2012-04-14 12 views
0

-Computernameパラメータを使用するPS関数を作成しようとしています。ここで私が使用しているコードされています。私はGet-Foo -Computername BAZとしての機能を実行すると名前付きパラメータがスクリプトで機能しない

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

はしかし、それは名前付きパラメータBAZを渡すことはありませんが、代わりに常に$env:COMPUTERNAMEの値を使用しています。私はPowerShellにはまったく新しく、関数を書くのは間違いないので、誰かがここで間違っている場所をすばやく見ることができれば幸いです。私は切り取って、動作する別のスクリプトからparam行を変更したので、なぜここではうまくいかないのかわかりません...ありがとう。

答えて

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」と出力の:それはそれは設定可能な方法のすべての様々なタイプの私のために働きました。

+0

私はあなたが見ているものを見ていません...私はその正確なスクリプトを実行すると、私は出力を取得しません。私はPS3.0をWin8 CTPで動かしていますが、それは問題ではないと思います。 –

+0

PS 2.0を使って、同じことを試しました。非常に非常に奇妙な... –

+0

私は未知ですので、それはです:)私は、パラメータなしでちょうど "Get-Foo"として関数を呼び出していました。だから、常にデフォルトを取っていました:-Pそして、上記のテストでは、私は関数ブロックをコピーし、コマンドラインでパラメータ付きのスクリプトとして実行しようとしました。明らかに私は学ぶべきことがたくさんある...どうも助けてくれてありがとう! –