Compartir a través de


Ejemplo GetProcessSample02

En este ejemplo se muestra cómo escribir un cmdlet que recupere los procesos en el equipo local. Proporciona un parámetro Name que se puede usar para especificar los procesos que se van a recuperar. Este cmdlet es una versión simplificada del cmdlet Get-Process proporcionado por Windows PowerShell 2.0.

Creación del ejemplo mediante Visual Studio

  1. Con el SDK de Windows PowerShell 2.0 instalado, vaya a la carpeta GetProcessSample02. La ubicación predeterminada es C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0\Samples\sysmgmt\WindowsPowerShell\csharp\GetProcessSample02.

  2. Haga doble clic en el icono del archivo de solución (.sln). Se abre el proyecto de ejemplo en Visual Studio.

  3. En el menú compilación de, seleccione Compilar solución para compilar la biblioteca para el ejemplo en las carpetas de \bin o \bin\debug predeterminadas.

Cómo ejecutar el ejemplo

  1. Cree la siguiente carpeta de módulo:

    [user]\Documents\WindowsPowerShell\Modules\GetProcessSample02

  2. Copie el ensamblado de ejemplo en la carpeta del módulo.

  3. Inicie Windows PowerShell.

  4. Ejecute el siguiente comando para cargar el ensamblado en Windows PowerShell:

    Import-Module getprossessample02

  5. Ejecute el siguiente comando para ejecutar el cmdlet :

    Get-Proc

Requisitos

Este ejemplo requiere Windows PowerShell 2.0.

Demostraciones

En este ejemplo se muestra lo siguiente.

  • Declarar una clase de cmdlet mediante el atributo Cmdlet.

  • Declarar un parámetro de cmdlet mediante el atributo Parameter.

  • Especificar la posición del parámetro.

  • Declarar un atributo de validación para la entrada del parámetro.

Ejemplo

En este ejemplo se muestra una implementación del cmdlet Get-Proc que incluye un parámetro Name.

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 list of process names on which
    /// the Get-Proc cmdlet will work.
    /// </summary>
    [Parameter(Position = 0)]
    [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 process objects 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 cmdlet, get and write
        // the associated processes.
        foreach (string name in this.processNames)
        {
          WriteObject(Process.GetProcessesByName(name), true);
        }
      } // End if (processNames...).
    } // End ProcessRecord.
    #endregion Cmdlet Overrides
  } // End GetProcCommand class.
  #endregion GetProcCommand
}

Véase también