【问题标题】:C# equivalent of PowerShell $input variableC# 等效于 PowerShell $input 变量
【发布时间】:2014-02-27 16:25:32
【问题描述】:

我通过扩展 PSCmdlet 类在 C# 中创建 PowerShell cmdlet。 我需要获取整个流水线输入以在 C# 代码中使用。我尝试将属性设置为的参数:

[Parameter(Mandatory = true, ValueFromPipeline = true, ValueFromPipelineByPropertyName = true)]
public Object Connection;

当我尝试通过管道输入项目列表来执行 cmdlet 时,我一次得到一个项目以在 C# 代码中进行处理。

$a=@("value1","value2")
$a | cmdlet-name

我需要获取整个管道输入以在我的 C# 代码中进行处理。我发现这可以在 PowerShell 中使用 $input 变量获得。是否有这个 $input PowerShell 变量的 C# 等效项?

【问题讨论】:

    标签: c# powershell powershell-cmdlet


    【解决方案1】:

    我不知道。但是,您可以使用 ProcessRecord 方法将管道对象(从绑定到管道输入的属性)累积到一个集合中,然后在 EndProcessing 方法中处理累积的对象。

    【讨论】:

    • 我不确定,但是对于每个流水线项目,ProcessRecord 方法是否执行一次?如果是,有没有办法找出 ProcessRecord 方法的当前通过号?
    • Yes ProcessRecord 为每个管道对象执行。请记住,单个管道对象可能是一个数组,具体取决于您如何定义受管道绑定的属性。我不知道确定通行证号的内置方法,但您始终可以在 cmdlet 中添加一个 int 字段,并在每次调用 ProcessRecord 时递增它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-14
    • 1970-01-01
    • 2018-01-15
    • 1970-01-01
    • 1970-01-01
    • 2011-01-18
    • 2017-11-11
    相关资源
    最近更新 更多