Partilhar via


GetProcessSample03 Sample (Exemplo GetProcessSample03)

Este exemplo mostra como implementar um cmdlet que recupera os processos no computador local. Ele fornece um parâmetro Name que pode aceitar um objeto do pipeline ou um valor de uma propriedade de um objeto cujo nome de propriedade é o mesmo que o nome do parâmetro. Este cmdlet é uma versão simplificada do cmdlet Get-Process fornecido pelo Windows PowerShell 2.0.

Como criar o exemplo usando o Visual Studio

  1. Com o SDK do Windows PowerShell 2.0 instalado, navegue até a pasta GetProcessSample03. O local padrão é C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0\Samples\sysmgmt\WindowsPowerShell\csharp\GetProcessSample03.

  2. Clique duas vezes no ícone do arquivo de solução (.sln). Isso abre o projeto de exemplo no Visual Studio.

  3. No menu Build, selecione Build Solution para criar a biblioteca para o exemplo nas pastas \bin ou \bin\debug padrão.

Como executar o exemplo

  1. Crie a seguinte pasta de módulo:

    [user]\Documents\WindowsPowerShell\Modules\GetProcessSample03

  2. Copie o assembly de exemplo para a pasta do módulo.

  3. Inicie o Windows PowerShell.

  4. Execute o seguinte comando para carregar o assembly no Windows PowerShell:

    Import-Module getprossessample03

  5. Execute o seguinte comando para executar o cmdlet:

    Get-Proc

Requerimentos

Este exemplo requer o Windows PowerShell 2.0.

Demonstra

Este exemplo demonstra o seguinte.

  • Declarando uma classe de cmdlet usando o atributo Cmdlet.

  • Declarando um parâmetro de cmdlet usando o atributo Parameter.

  • Especificando a posição do parâmetro.

  • Especificando que o parâmetro recebe entrada do pipeline. A entrada pode ser obtida de um objeto ou um valor de uma propriedade de um objeto cujo nome de propriedade é o mesmo que o nome do parâmetro.

  • Declarando um atributo de validação para a entrada do parâmetro.

Exemplo

Este exemplo mostra uma implementação do cmdlet Get-Proc que inclui um parâmetro Name que aceita entrada do pipeline.

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
}

Ver também