使用ValueFromPipelineByPropertyName时如何获取原始管道对象?

时间:2018-01-08 15:29:12

标签: c# powershell cmdlets cmdlet pscmdlet

我在C#中构建Cmdlet。

使用ValueFromPipelineByPropertyName=true绑定参数时,我经常希望将属性绑定的原始管道对象传递回管道。如何获得对这个原始对象的引用?

所以如果这是我的cmdlet

[Cmdlet(VerbsLifecycle.Start, "Foo")]
public class StartFooCommand : PSCmdlet
{
    [Parameter(Position = 0, Mandatory = true, ValueFromPipeline = true, ValueFromPipelineByPropertyName = true)]
    public String Name { get; set; }

    protected override void ProcessRecord()
    {
        // Perform various Foo-related activities...

        Object pipelineObject = GetTheObjectPassedInFromThePipeline();

        WriteObject(pipelineObject);
    }
}

我希望能够在我的剧本中使用

# $foo would be some return value from another cmdlet
$foo = New-Object PSObject -prop @{ Name = "Frank"; Bar = "Baz" }
$foo | Get-Foo | Use-Foo
#    ^         ^ Here I want to pass the original $foo object to the next cmdlet
#    L Name gets bound from my object to my property

1 个答案:

答案 0 :(得分:1)

您只需要包含另一个具有ValueFromPipeline = $ true属性的参数。