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. Este cmdlet es una versión simplificada del cmdlet Get-Process
que proporciona Windows PowerShell 2.0.
Cómo compilar el ejemplo mediante Visual Studio
Con el SDK de Windows PowerShell 2.0 instalado, vaya a la carpeta GetProcessSample01. La ubicación predeterminada es
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0\Samples\sysmgmt\WindowsPowerShell\csharp\GetProcessSample01
.Haga doble clic en el icono del archivo de solución (.sln). Se abre el proyecto de ejemplo en Microsoft 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
Abra una ventana de símbolo del sistema.
Vaya al directorio que contiene el archivo .dll de ejemplo.
Ejecute el
installutil "GetProcessSample01.dll"
.Inicie Windows PowerShell.
Ejecute el siguiente comando para agregar el complemento al shell.
Add-PSSnapin GetProcPSSnapIn01
Escriba el siguiente comando para ejecutar el cmdlet .
Get-Proc
Get-Proc
Se trata de una salida de ejemplo que resulta de seguir estos pasos.
Id Name State HasMoreData Location Command -- ---- ----- ----------- -------- ------- 1 26932870-d3b... NotStarted False Write-Host "A f...
Set-Content $Env:TEMP\test.txt "This is a test file"
A file was created in the TEMP directory
Requisitos
Este ejemplo requiere Windows PowerShell 1.0 o posterior.
Demostraciones
En este ejemplo se muestra lo siguiente.
Creación de un cmdlet de ejemplo básico.
Definición de una clase de cmdlet mediante el atributo Cmdlet.
Crear un complemento que funcione con Windows PowerShell 1.0 y Windows PowerShell 2.0. Los ejemplos posteriores usan módulos en lugar de complementos para que requieran Windows PowerShell 2.0.
Ejemplo
En este ejemplo se muestra cómo crear un cmdlet sencillo y su complemento.
using System;
using System.Diagnostics;
using System.Management.Automation; //Windows PowerShell namespace
using System.ComponentModel;
namespace Microsoft.Samples.PowerShell.Commands
{
#region GetProcCommand
/// <summary>
/// This class implements the Get-Proc cmdlet.
/// </summary>
[Cmdlet(VerbsCommon.Get, "Proc")]
public class GetProcCommand : Cmdlet
{
#region Cmdlet Overrides
/// <summary>
/// The ProcessRecord method calls the Process.GetProcesses
/// method to retrieve the processes of the local computer.
/// Then, the WriteObject method writes the associated processes
/// to the pipeline.
/// </summary>
protected override void ProcessRecord()
{
// Retrieve the current processes.
Process[] processes = Process.GetProcesses();
// Write the processes to the pipeline to make them available
// to the next cmdlet. The second argument (true) tells Windows
// PowerShell to enumerate the array and to send one process
// object at a time to the pipeline.
WriteObject(processes, true);
}
#endregion Overrides
} //GetProcCommand
#endregion GetProcCommand
#region PowerShell snap-in
/// <summary>
/// Create this sample as a PowerShell snap-in
/// </summary>
[RunInstaller(true)]
public class GetProcPSSnapIn01 : PSSnapIn
{
/// <summary>
/// Create an instance of the GetProcPSSnapIn01
/// </summary>
public GetProcPSSnapIn01()
: base()
{
}
/// <summary>
/// Get a name for this PowerShell snap-in. This name will be used in registering
/// this PowerShell snap-in.
/// </summary>
public override string Name
{
get
{
return "GetProcPSSnapIn01";
}
}
/// <summary>
/// Vendor information for this PowerShell snap-in.
/// </summary>
public override string Vendor
{
get
{
return "Microsoft";
}
}
/// <summary>
/// Gets resource information for vendor. This is a string of format:
/// resourceBaseName,resourceName.
/// </summary>
public override string VendorResource
{
get
{
return "GetProcPSSnapIn01,Microsoft";
}
}
/// <summary>
/// Description of this PowerShell snap-in.
/// </summary>
public override string Description
{
get
{
return "This is a PowerShell snap-in that includes the Get-Proc cmdlet.";
}
}
}
#endregion PowerShell snap-in
}