Delen via


Voorbeeld GetProcessSample02

In dit voorbeeld ziet u hoe u een cmdlet schrijft waarmee de processen op de lokale computer worden opgehaald. Het biedt een Name parameter die kan worden gebruikt om de processen op te geven die moeten worden opgehaald. Deze cmdlet is een vereenvoudigde versie van de Get-Process cmdlet geleverd door Windows PowerShell 2.0.

Het voorbeeld bouwen met Visual Studio

  1. Wanneer de Windows PowerShell 2.0 SDK is geïnstalleerd, gaat u naar de map GetProcessSample02. De standaardlocatie is C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0\Samples\sysmgmt\WindowsPowerShell\csharp\GetProcessSample02.

  2. Dubbelklik op het pictogram voor het oplossingsbestand (.sln). Hiermee opent u het voorbeeldproject in Visual Studio.

  3. Selecteer in het menu BuildBuild Solution om de bibliotheek voor het voorbeeld te bouwen in de standaardmappen \bin of \bin\debug.

Het voorbeeld uitvoeren

  1. Maak de volgende modulemap:

    [user]\Documents\WindowsPowerShell\Modules\GetProcessSample02

  2. Kopieer de voorbeeldassembly naar de modulemap.

  3. Start Windows PowerShell.

  4. Voer de volgende opdracht uit om de assembly in Windows PowerShell te laden:

    Import-Module getprossessample02

  5. Voer de volgende opdracht uit om de cmdlet uit te voeren:

    Get-Proc

Vereisten

Voor dit voorbeeld is Windows PowerShell 2.0 vereist.

Demonstreert

In dit voorbeeld ziet u het volgende.

  • Een cmdlet-klasse declareren met behulp van het kenmerk Cmdlet.

  • Een cmdlet-parameter declareren met behulp van het parameterkenmerk.

  • De positie van de parameter opgeven.

  • Het declareren van een validatiekenmerk voor de parameterinvoer.

Voorbeeld

In dit voorbeeld ziet u een implementatie van de Get-Proc cmdlet die een Name parameter bevat.

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
}

Zie ook