Udostępnij za pomocą


Przykład GetProcessSample02

W tym przykładzie pokazano, jak napisać polecenie cmdlet, które pobiera procesy na komputerze lokalnym. Udostępnia Name parametr, który może służyć do określania procesów do pobrania. To polecenie cmdlet jest uproszczoną wersją polecenia cmdlet Get-Process udostępnianego przez program Windows PowerShell 2.0.

Jak utworzyć przykład przy użyciu programu Visual Studio

  1. Po zainstalowaniu zestawu Windows PowerShell 2.0 SDK przejdź do folderu GetProcessSample02. Domyślna lokalizacja to C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0\Samples\sysmgmt\WindowsPowerShell\csharp\GetProcessSample02.

  2. Kliknij dwukrotnie ikonę pliku rozwiązania (.sln). Spowoduje to otwarcie przykładowego projektu w programie Visual Studio.

  3. W menu Kompilacja wybierz pozycję Build Solution, aby skompilować bibliotekę dla przykładu w domyślnych folderach \bin lub \bin\debug.

Jak uruchomić przykład

  1. Utwórz następujący folder modułu:

    [user]\Documents\WindowsPowerShell\Modules\GetProcessSample02

  2. Skopiuj przykładowy zestaw do folderu modułu.

  3. Uruchom program Windows PowerShell.

  4. Uruchom następujące polecenie, aby załadować zestaw do programu Windows PowerShell:

    Import-Module getprossessample02

  5. Uruchom następujące polecenie, aby uruchomić polecenie cmdlet:

    Get-Proc

Wymagania

Ten przykład wymaga programu Windows PowerShell 2.0.

Demonstruje

W tym przykładzie pokazano następujące elementy.

  • Deklarowanie klasy cmdlet przy użyciu atrybutu cmdlet.

  • Deklarowanie parametru cmdlet przy użyciu atrybutu Parametr.

  • Określanie położenia parametru.

  • Deklarowanie atrybutu weryfikacji dla danych wejściowych parametru.

Przykład

W tym przykładzie przedstawiono implementację polecenia cmdlet Get-Proc zawierającego parametr Name.

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
}

Zobacz też