Compartilhar via


Amostra GetProcessSample03

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

Como criar o exemplo usando 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 da solução (. sln). Isso abre o projeto de exemplo no Visual Studio.

  3. No menu Compilar, selecione Compilar Solução.

    A biblioteca do exemplo será criada nas pastas \bin ou \bin\Debug padrão.

Como executar a amostra

  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 em Windows PowerShell:

    Import-module getprossessample03

  5. Execute o seguinte comando para executar o cmdlet:

    get-proc

Requisitos

este exemplo requer 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 de um valor de uma propriedade de um objeto cujo nome de propriedade é igual ao nome do parâmetro.

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

Exemplo

Este exemplo mostra uma implementação do cmdlet Get-Proc que inclui um Name parâmetro 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
}

Consulte Também

Escrevendo um Cmdlet do Windows PowerShell