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 implementar un cmdlet que recupera los procesos en el equipo local. Proporciona un parámetro Name
que puede aceptar un objeto de la canalización o un valor de una propiedad de un objeto cuyo nombre de propiedad es el mismo que el nombre del parámetro. 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 GetProcessSample03. La ubicación predeterminada es
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0\Samples\sysmgmt\WindowsPowerShell\csharp\GetProcessSample03
.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\GetProcessSample03
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 getprossessample03
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.
Especificando que el parámetro toma la entrada de la canalización. La entrada se puede tomar de un objeto o un valor de una propiedad de un objeto cuyo nombre de propiedad es el mismo que el nombre 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
que acepta la entrada de la canalización.
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
}