Freigeben über


GetProc03-Codebeispiel (C#)

Der folgende Code zeigt die Implementierung eines Get-Process Cmdlets, das weitergeleitete Eingaben akzeptieren kann. Diese Implementierung definiert einen Name Parameter, der Pipelineeingaben akzeptiert, Prozessinformationen vom lokalen Computer basierend auf den angegebenen Namen abruft, und verwendet dann die WriteObject(System.Object,System.Boolean) -Methode als Ausgabemechanismus zum Senden von Objekten an die Pipeline.

Hinweis

Sie können die C#-Quelldatei (getprov03.cs) für dieses Get-Proc Cmdlet mithilfe des Microsoft Windows Software Development Kit für Windows Vista und .NET Framework 3.0-Runtime-Komponenten herunterladen. Downloadanweisungen finden Sie unter Installieren von Windows PowerShell und Herunterladen des Windows PowerShell SDK-. Die heruntergeladenen Quelldateien sind im verzeichnis <PowerShell-Beispiele> verfügbar.

Codebeispiel

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
}

Siehe auch

Windows PowerShell-Programmierhandbuch

Windows PowerShell SDK-