2013-01-09 1 views
2

Comment consommer des données à partir du pipeline lors de l'écriture des cmdlets en C#?Consomme les données du pipeline

Par exemple, j'ai deux classes:

Celui-ci produit des données:

[Cmdlet(VerbsCommon.Get, "Numbers")] 
public class GetNumbers : Cmdlet 
{ 
    protected override void ProcessRecord() 
    { 
     WriteObject(new[] {1, 2, 3, 4, 5}, true); 
    } 
} 

Et celui-ci doit consommer ces données:

[Cmdlet(VerbsCommon.Find, "Numbers")] 
public class FindNumbers: Cmdlet 
{ 
    protected override void ProcessRecord() 
    { 
     foreach (var variable in %Input%) // Where do I get input? Any ReadRecord or something else? 
     { 
      if (variable % 2 == 0) 
      { 
       WriteObject(variable); 
      } 
     } 
    } 
} 

De cette façon:

Get-Numbers | Find-Numbers 

Répondre

5

Vous s Hould utilisation ValueFromPipeline de ParameterAttribute classe:

[Cmdlet(VerbsCommon.Find, "Numbers")] 
public class FindNumbers: Cmdlet 
{ 
    [Parameter(ValueFromPipeline = true)] // The data appear in this variable 
    public int[] Input { get; set; } 

    protected override void ProcessRecord() 
    { 
     foreach (var variable in Input) 
     { 
      if (variable % 2 == 0) 
      { 
       WriteObject(variable); 
      } 
     } 
    } 
} 
+0

Cela pourrait aussi aider à: http://stackoverflow.com/questions/885349/how-to-write-a-powershell-script-that-accepts-pipeline-input – Zasz

+2

@Zasz: Je ne vois pas comment votre lien est lié à l'écriture de ces cmdlets en C#? – mousio

Questions connexes