Share via


Guide pratique pour appeler une applet de commande à partir d’une applet de commande

Cet exemple montre comment appeler une applet de commande à partir d’une autre applet de commande, ce qui vous permet d’ajouter la fonctionnalité de l’applet de commande appelée à l’applet de commande que vous développez. Dans cet exemple, l' Get-Process applet de commande est appelée pour récupérer les processus en cours d’exécution sur l’ordinateur local. L’appel à l' Get-Process applet de commande est équivalent à la commande suivante. Cette commande récupère tous les processus dont les noms commencent par les caractères « a » à « t ».

Get-Process -name [a-t]

Important

Vous pouvez appeler uniquement les applets de commande qui dérivent directement de la classe System. Management. Automation. applet de commande. Vous ne pouvez pas appeler une applet de commande qui dérive de la classe System. Management. Automation. PSCmdlet .

Pour appeler une applet de commande à partir d’une applet de commande

  1. Assurez-vous que l’assembly qui définit l’applet de commande à appeler est référencé et que l' using instruction appropriée est ajoutée. Dans cet exemple, les espaces de noms suivants sont ajoutés.

    using System.Diagnostics;
    using System.Management.Automation;   // Windows PowerShell assembly.
    using Microsoft.PowerShell.Commands;  // Windows PowerShell assembly.
    
  2. Dans la méthode de traitement d’entrée de l’applet de commande, créez une nouvelle instance de l’applet de commande à appeler. Dans cet exemple, un objet de type Microsoft. PowerShell. Commands. Getprocesscommand est créé avec la chaîne qui contient les arguments utilisés lors de l’appel de l’applet de commande.

    GetProcessCommand gp = new GetProcessCommand();
    gp.Name = new string[] { "[a-t]*" };
    
  3. Appelez la méthode System. Management. Automation. cmdlet. Invoke * pour appeler l' Get-Process applet de commande.

      foreach (Process p in gp.Invoke<Process>())
      {
        Console.WriteLine(p.ToString());
      }
    }
    

Exemple

Dans cet exemple, l' Get-Process applet de commande est appelée à partir de la méthode System. Management. Automation. cmdlet. BeginProcessing d’une applet de commande.

using System;
using System.Diagnostics;
using System.Management.Automation;   // Windows PowerShell assembly.
using Microsoft.PowerShell.Commands;  // Windows PowerShell assembly.

namespace SendGreeting
{
  // Declare the class as a cmdlet and specify an
  // appropriate verb and noun for the cmdlet name.
  [Cmdlet(VerbsCommunications.Send, "GreetingInvoke")]
  public class SendGreetingInvokeCommand : Cmdlet
  {
    // Declare the parameters for the cmdlet.
    [Parameter(Mandatory = true)]
    public string Name
    {
      get { return name; }
      set { name = value; }
    }
    private string name;

    // Override the BeginProcessing method to invoke
    // the Get-Process cmdlet.
    protected override void BeginProcessing()
    {
      GetProcessCommand gp = new GetProcessCommand();
      gp.Name = new string[] { "[a-t]*" };
      foreach (Process p in gp.Invoke<Process>())
      {
        Console.WriteLine(p.ToString());
      }
    }

    // Override the ProcessRecord method to process
    // the supplied user name and write out a
    // greeting to the user by calling the WriteObject
    // method.
    protected override void ProcessRecord()
    {
      WriteObject("Hello " + name + "!");
    }
  }
}

Voir aussi

Écriture d’une applet de commande Windows PowerShell