Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier les répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer de répertoire.
Cet exemple montre comment appeler une applet de commande binaire qui dérive de [System.Management.Automation.Cmdlet] directement à partir d’une autre applet de commande binaire, ce qui vous permet d’ajouter les fonctionnalités de l’applet de commande appelée à l’applet de commande binaire que vous développez. Dans cet exemple, l’applet de commande Get-Process est appelée pour obtenir les processus en cours d’exécution sur l’ordinateur local. L’appel à l’applet de commande Get-Process équivaut à la commande suivante. Cette commande récupère tous les processus dont les noms commencent par les caractères « a » par « t ».
Get-Process -Name [a-t]*
Important
Vous pouvez appeler uniquement ces applets de commande qui dérivent directement de la classe System.Management.Automation.Cmdlet. Vous ne pouvez pas appeler une applet de commande qui dérive de la classe System.Management.Automation.PSCmdlet. Pour obtenir un exemple, consultez Comment appeler un PSCmdlet à partir d’unPSCmdlet .
Pour appeler une applet de commande à partir d’une applet de commande
Vérifiez que l’assembly qui définit l’applet de commande à appeler est référencé et que l’instruction
usingappropriée est ajoutée. Dans cet exemple, les espaces de noms suivants sont ajoutés.using System.Diagnostics; using System.Management.Automation; // PowerShell assembly. using Microsoft.PowerShell.Commands; // PowerShell cmdlets assembly you want to call.Dans la méthode de traitement d’entrée de l’applet de commande, créez une 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]*" };Appelez la méthode System.Management.Automation.Cmdlet.Invoke* pour appeler l’applet de commande
Get-Process.foreach (Process p in gp.Invoke<Process>()) { Console.WriteLine(p.ToString()); } }
Exemple :
Dans cet exemple, l’applet de commande Get-Process 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; // PowerShell assembly.
using Microsoft.PowerShell.Commands; // PowerShell cmdlets assembly you want to call.
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; set; }
// 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>())
{
WriteVerbose(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 + "!");
}
}
}