Partager via


Exemple GetProcessSample03

Cet exemple montre comment implémenter une applet de commande qui récupère les processus sur l’ordinateur local. Il fournit un paramètre Name qui peut accepter un objet à partir du pipeline ou une valeur d’une propriété d’un objet dont le nom de propriété est identique au nom du paramètre. Cette applet de commande est une version simplifiée de l’applet de commande Get-Process fournie par Windows PowerShell 2.0.

Comment générer l’exemple à l’aide de Visual Studio

  1. Une fois le Kit de développement logiciel (SDK) Windows PowerShell 2.0 installé, accédez au dossier GetProcessSample03. L’emplacement par défaut est C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0\Samples\sysmgmt\WindowsPowerShell\csharp\GetProcessSample03.

  2. Double-cliquez sur l’icône du fichier de solution (.sln). L’exemple de projet s’ouvre dans Visual Studio.

  3. Dans le menu Générer, sélectionnez Générer la solution pour générer la bibliothèque pour l’exemple dans les dossiers \bin ou \bin\debug par défaut.

Comment exécuter l’exemple

  1. Créez le dossier de module suivant :

    [user]\Documents\WindowsPowerShell\Modules\GetProcessSample03

  2. Copiez l’exemple d’assembly dans le dossier du module.

  3. Démarrez Windows PowerShell.

  4. Exécutez la commande suivante pour charger l’assembly dans Windows PowerShell :

    Import-Module getprossessample03

  5. Exécutez la commande suivante pour exécuter l’applet de commande :

    Get-Proc

Spécifications

Cet exemple nécessite Windows PowerShell 2.0.

Montre ce qui suit

Cet exemple illustre ce qui suit.

  • Déclaration d’une classe d’applet de commande à l’aide de l’attribut Cmdlet.

  • Déclaration d’un paramètre d’applet de commande à l’aide de l’attribut Parameter.

  • Spécification de la position du paramètre.

  • Spécification du paramètre qui prend l’entrée du pipeline. L’entrée peut être extraite d’un objet ou d’une valeur d’une propriété d’un objet dont le nom de propriété est identique au nom du paramètre.

  • Déclaration d’un attribut de validation pour l’entrée de paramètre.

Exemple :

Cet exemple montre une implémentation de l’applet de commande Get-Proc qui inclut un paramètre Name qui accepte l’entrée du pipeline.

namespace Microsoft.Samples.PowerShell.Commands
{
  using System;
  using System.Diagnostics;
  using System.Management.Automation;           // Windows PowerShell namespace
  #region GetProcCommand

  /// <summary>
  /// This class implements the Get-Proc cmdlet.
  /// </summary>
  [Cmdlet(VerbsCommon.Get, "Proc")]
  public class GetProcCommand : Cmdlet
  {
    #region Parameters

    /// <summary>
    /// The names of the processes retrieved by the cmdlet.
    /// </summary>
    private string[] processNames;

    /// <summary>
    /// Gets or sets the names of the
    /// process that the cmdlet will retrieve.
    /// </summary>
    [Parameter(
               Position = 0,
               ValueFromPipeline = true,
               ValueFromPipelineByPropertyName = true)]
    [ValidateNotNullOrEmpty]
    public string[] Name
    {
      get { return this.processNames; }
      set { this.processNames = value; }
    }

    #endregion Parameters

    #region Cmdlet Overrides

    /// <summary>
    /// The ProcessRecord method calls the Process.GetProcesses
    /// method to retrieve the processes specified by the Name
    /// parameter. Then, the WriteObject method writes the
    /// associated processes to the pipeline.
    /// </summary>
    protected override void ProcessRecord()
    {
      // If no process names are passed to the cmdlet, get all
      // processes.
      if (this.processNames == null)
      {
        WriteObject(Process.GetProcesses(), true);
      }
      else
      {
        // If process names are passed to the cmdlet, get and write
        // the associated processes.
        foreach (string name in this.processNames)
        {
          WriteObject(Process.GetProcessesByName(name), true);
        }
      } // End if (processNames ...)
    } // End ProcessRecord.

    #endregion Overrides
  } // End GetProcCommand.
  #endregion GetProcCommand
}

Voir aussi