Condividi tramite


Esempio di GetProcessSample01

Questo esempio illustra come implementare un cmdlet che recupera i processi nel computer locale. Questo cmdlet è una versione semplificata del cmdlet Get-Process fornito da Windows PowerShell 2.0.

Come compilare l'esempio usando Visual Studio

  1. Con Windows PowerShell 2.0 SDK installato, passare alla cartella GetProcessSample01. Il percorso predefinito è C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0\Samples\sysmgmt\WindowsPowerShell\csharp\GetProcessSample01.

  2. Fare doppio clic sull'icona per il file della soluzione (.sln). Verrà aperto il progetto di esempio in Microsoft Visual Studio.

  3. Nel menu Compila selezionare Compila soluzione per compilare la libreria per l'esempio nelle cartelle predefinite \bin o \bin\debug.

Come eseguire l'esempio

  1. Aprire una finestra del prompt dei comandi.

  2. Passare alla directory contenente il file di esempio .dll.

  3. Esegui installutil "GetProcessSample01.dll".

  4. Avviare Windows PowerShell.

  5. Eseguire il comando seguente per aggiungere lo snap-in alla shell.

    Add-PSSnapin GetProcPSSnapIn01

  6. Immettere il comando seguente per eseguire il cmdlet . Get-Proc

    Get-Proc

    Si tratta di un output di esempio risultante dalla procedura seguente.

    Id              Name            State      HasMoreData     Location             Command
    --              ----            -----      -----------     --------             -------
    1               26932870-d3b... NotStarted False                                 Write-Host "A f...
    
    
    Set-Content $Env:TEMP\test.txt "This is a test file"
    
    A file was created in the TEMP directory
    

Requisiti

Questo esempio richiede Windows PowerShell 1.0 o versione successiva.

Dimostra

In questo esempio viene illustrato quanto segue.

  • Creazione di un cmdlet di esempio di base.

  • Definizione di una classe cmdlet tramite l'attributo Cmdlet.

  • Creazione di uno snap-in che funziona con Windows PowerShell 1.0 e Windows PowerShell 2.0. Gli esempi successivi usano moduli anziché snap-in, quindi richiedono Windows PowerShell 2.0.

Esempio

Questo esempio illustra come creare un cmdlet semplice e il relativo snap-in.

using System;
using System.Diagnostics;
using System.Management.Automation;             //Windows PowerShell namespace
using System.ComponentModel;

namespace Microsoft.Samples.PowerShell.Commands
{

   #region GetProcCommand

   /// <summary>
   /// This class implements the Get-Proc cmdlet.
   /// </summary>
   [Cmdlet(VerbsCommon.Get, "Proc")]
   public class GetProcCommand : Cmdlet
   {
      #region Cmdlet Overrides

      /// <summary>
      /// The ProcessRecord method calls the Process.GetProcesses
      /// method to retrieve the processes of the local computer.
      /// Then, the WriteObject method writes the associated processes
      /// to the pipeline.
      /// </summary>
      protected override void ProcessRecord()
      {
         // Retrieve the current processes.
         Process[] processes = Process.GetProcesses();

         // Write the processes to the pipeline to make them available
         // to the next cmdlet. The second argument (true) tells Windows
         // PowerShell to enumerate the array and to send one process
         // object at a time to the pipeline.
         WriteObject(processes, true);
      }

      #endregion Overrides

   } //GetProcCommand

   #endregion GetProcCommand

   #region PowerShell snap-in

   /// <summary>
   /// Create this sample as a PowerShell snap-in
   /// </summary>
   [RunInstaller(true)]
   public class GetProcPSSnapIn01 : PSSnapIn
   {
       /// <summary>
       /// Create an instance of the GetProcPSSnapIn01
       /// </summary>
       public GetProcPSSnapIn01()
           : base()
       {
       }

       /// <summary>
       /// Get a name for this PowerShell snap-in. This name will be used in registering
       /// this PowerShell snap-in.
       /// </summary>
       public override string Name
       {
           get
           {
               return "GetProcPSSnapIn01";
           }
       }

       /// <summary>
       /// Vendor information for this PowerShell snap-in.
       /// </summary>
       public override string Vendor
       {
           get
           {
               return "Microsoft";
           }
       }

       /// <summary>
       /// Gets resource information for vendor. This is a string of format:
       /// resourceBaseName,resourceName.
       /// </summary>
       public override string VendorResource
       {
           get
           {
               return "GetProcPSSnapIn01,Microsoft";
           }
       }

       /// <summary>
       /// Description of this PowerShell snap-in.
       /// </summary>
       public override string Description
       {
           get
           {
               return "This is a PowerShell snap-in that includes the Get-Proc cmdlet.";
           }
       }
   }

   #endregion PowerShell snap-in
}

Vedere anche