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
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.
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]*" };
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
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour