3

名前付きパラメーターとしてパイプラインからディレクトリを受け入れる Powershell スクリプトを作成しようとしています。私のパラメータ宣言は次のようになります

param([Parameter(Mandatory=$true, ValueFromPipeline=$true, ValueFromPipelinebyPropertyName=$true)] [System.IO.DirectoryInfo[]] $PsPath)

私の問題は、呼び出し

gci c:\ -Directory | MyScript

gci入力配列にある結果の最後の要素のみになります。ここで何が問題なのですか?

前もって感謝します、クリストフ

4

1 に答える 1

5

実行コードを PROCESS ブロックにラップする必要があります。

function MyScript {
    param(
        [Parameter(Mandatory=$true, 
                   ValueFromPipeline=$true, 
                   ValueFromPipelinebyPropertyName=$true)] 
        [System.IO.DirectoryInfo[]] $PsPath
    )

    PROCESS {
        $PsPath
    }
}

gci c:\ -Directory | MyScript

Don Jones は、BEGIN、PROCESS、および END ブロックの優れた概要をここで説明しています: http://technet.microsoft.com/en-us/magazine/hh413265.aspx

于 2013-05-13T12:54:55.737 に答える