私はそれが単純であるように感じるおもちゃの問題があります。私はパイプをサポートするJoin-Pathのような機能を持っていたいと思います。 Build-Pathと呼んでください。このように、(私のテスト1-4です)これらのステートメントは同等でなければなりません:PowerShell:位置パラメータとValueFromPipeline
Get-Location | Build-Path Test
Get-Location | Build-Path -Right Test
Build-Path -Left (Get-Location) -Right Test
Build-Path (Get-Location) Test
、私は多くのことを試みたが、私はこの2つの関数(相互に排他的)を得ることができ、最も近いました:
をA:両方の値の明示的な位置。テストに失敗する1
function Build-Path
(
[Parameter(Mandatory=$true, Position=0, ValueFromPipeline=$true)]
[String] $Left,
[Parameter(Mandatory=$true, Position=1)]
[String] $Right
)
{
Join-Path $Left $Right
}
B:パイプラインパラメータには位置がなく、右の位置は0です。テスト4
function Build-Path
(
[Parameter(Mandatory=$true, ValueFromPipeline=$true)]
[String] $Left,
[Parameter(Mandatory=$true, Position=0)]
[String] $Right
)
{
Join-Path $Left $Right
}
を失敗した私は成功しません(私の試みを保存していない)いくつかの方法でParameterSetsを使用して試したと私は今困惑ビットです。
思考?
'$ left | Join-Path -ChildPath $ right' < - Join-Pathはあなたが既に求めていることをしっかりとしています。 –
@RyanBemroseはペダンティックに聞こえますが、位置パラメータ($ left | Join-path $ right)を使用しません –
別問題:パイプライン入力を使用するときに本当に必要なプロセスブロックがありません。あなたはパイプラインで1つのオブジェクトしか使用していないので、それは明らかではありません。 –