Voorbeeld GetProcessSample03

In dit voorbeeld ziet u hoe u een cmdlet implementeert die de processen op de lokale computer op haalt. Het biedt een parameter die een object uit de pijplijn kan accepteren of een waarde uit een eigenschap van een object waarvan de naam van de eigenschap hetzelfde Name is als de parameternaam. Deze cmdlet is een vereenvoudigde versie van de Get-Process cmdlet die wordt geleverd door Windows PowerShell 2.0.

Het voorbeeld bouwen met behulp van Visual Studio.

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

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

  3. Selecteer in het menu Bouwen de optie Oplossing bouwen.

    De bibliotheek voor het voorbeeld wordt gebouwd in de standaardmappen \bin of \bin\debug.

Het voorbeeld uitvoeren

  1. Maak de volgende modulemap:

    [user]/documents/windowspowershell/modules/GetProcessSample03

  2. Kopieer de voorbeeldassemblage naar de modulemap.

  3. Start Windows PowerShell.

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

    Import-module getprossessample03

  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 wordt het volgende gedemonstreerd.

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

  • Declareren van een cmdlet parameter met behulp van de Parameter kenmerk.

  • De positie van de parameter opgeven.

  • Opgeven dat de parameter invoer van de pijplijn gebruikt. De invoer kan worden genomen van een object of een waarde van een eigenschap van een object waarvan de eigenschapsnaam hetzelfde is als de parameternaam.

  • Het declareren van een validatiekenmerk voor de parameterinvoer.

Voorbeeld

Dit voorbeeld toont een implementatie van de Get-Proc cmdlet die een parameter bevat die invoer Name van de pijplijn accepteert.

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
}

Zie ook

Een Windows PowerShell-cmdlet schrijven