Я создаю командлет на С#.
При связывании параметров с использованием ValueFromPipelineByPropertyName=true
мне часто хотелось бы передать исходный объект конвейера, из которого были связаны свойства, обратно в конвейер. Как я могу получить ссылку на этот исходный объект?
Итак, если это мой командлет
[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