Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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
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
.Haga doble clic en el icono del archivo de solución (.sln). Se abre el proyecto de ejemplo en Visual Studio.
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
Cree la siguiente carpeta de módulo:
[user]\Documents\WindowsPowerShell\Modules\GetProcessSample02
Copie el ensamblado de ejemplo en la carpeta del módulo.
Inicie Windows PowerShell.
Ejecute el siguiente comando para cargar el ensamblado en Windows PowerShell:
Import-Module getprossessample02
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
}