GetProc03-codevoorbeeld (C#)

De volgende code toont de implementatie van een Get-Process cmdlet die pijplijninvoer kan accepteren. Deze implementatie definieert een parameter die pijplijninvoer accepteert, procesgegevens op de lokale computer op basis van de opgegeven namen op haalt en vervolgens de Name methode WriteObject(System.Object,System.Boolean) gebruikt als het uitvoermechanisme voor het verzenden van objecten naar de pijplijn.

Notitie

U kunt het C#-bronbestand (getprov03.cs) voor deze Get-Proc-cmdlet downloaden met behulp van de Microsoft Windows Software Development Kit voor Windows Vista en .NET Framework 3.0 Runtime Components. Zie How to Install Windows PowerShell and Download the Windows PowerShell SDK voor downloadinstructies. De gedownloade bronbestanden zijn beschikbaar in de <PowerShell Samples> map .

Codevoorbeeld

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 to act on.
       /// </summary>
       private string[] processNames;

      /// <summary>
      /// Gets or setsthe list of process names on 
      /// which the Get-Proc cmdlet will work.
      /// </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);
              }
          } // if (processNames ...
      } // ProcessRecord
      #endregion Overrides
   } // End GetProcCommand class.

    #endregion GetProcCommand
}

Zie ook

Handleiding voor Windows PowerShell-programmeurs

Windows PowerShell SDK