Esempio di Runspace05Runspace05 Sample

In questo esempio viene illustrato come aggiungere uno snap-in a un oggetto System.Management.Automation.Runspaces.Initialsessionstate in modo che il cmdlet dello snap-in sia disponibile quando viene aperto il spazio.This sample shows how to add a snap-in to an System.Management.Automation.Runspaces.Initialsessionstate object so that the cmdlet of the snap-in is available when the runspace is opened. Lo snap-in fornisce un cmdlet Get-proc (definito dall' esempio GetProcessSample01) che viene eseguito in modo sincrono tramite un oggetto System. Management. Automation. PowerShell .The snap-in provides a Get-Proc cmdlet (defined by the GetProcessSample01 Sample) that is run synchronously by using a System.Management.Automation.Powershell object.

RequisitiRequirements

Questo esempio richiede Windows PowerShell 2,0.This sample requires Windows PowerShell 2.0.

DimostraDemonstrates

In questo esempio vengono illustrate le operazioni seguenti.This sample demonstrates the following.

EsempioExample

Questo esempio crea un spazio che usa un oggetto System.Management.Automation.Runspaces.Initialsessionstate per definire gli elementi disponibili quando viene aperto il spazio.This sample creates a runspace that uses an System.Management.Automation.Runspaces.Initialsessionstate object to define the elements that are available when the runspace is opened. In questo esempio, uno snap-in che definisce un cmdlet Get-proc viene aggiunto allo stato della sessione iniziale.In this sample, a snap-in that defines a Get-Proc cmdlet is added to the initial session state.

namespace Microsoft.Samples.PowerShell.Runspaces
{
  using System;
  using System.Collections.ObjectModel;
  using System.Management.Automation;
  using System.Management.Automation.Runspaces;
  using PowerShell = System.Management.Automation.PowerShell;

  /// <summary>
  /// This class contains the Main entry point for this host application.
  /// </summary>
  internal class Runspace05
  {
    /// <summary>
    /// This sample shows how to define an initial session state that is
    /// used when creating a runspace. The sample invokes a command from
    /// a Windows PowerShell snap-in that is present in the console file.
    /// </summary>
    /// <param name="args">The parameter is not used.</param>
    /// <remarks>
    /// This sample assumes that user has coppied the GetProcessSample01.dll
    /// that is produced by the GetProcessSample01 sample to the current
    /// directory.
    /// This sample demonstrates the following:
    /// 1. Creating a default initial session state.
    /// 2. Adding a snap-in to the initial session state.
    /// 3. Creating a runspace that uses the initial session state.
    /// 4. Creating a PowerShell object that uses the runspace.
    /// 5. Adding the snap-in's get-proc cmdlet to the PowerShell object.
    /// 6. Using PSObject objects to extract and display properties from
    ///    the objects returned by the cmdlet.
    /// </remarks>
    private static void Main(string[] args)
    {
      // Create the default initial session state. The default initial
      // session state contains all the elements provided by Windows
      // PowerShell.
      InitialSessionState iss = InitialSessionState.CreateDefault();
      PSSnapInException warning;
      iss.ImportPSSnapIn("GetProcPSSnapIn01", out warning);

      // Create a runspace. Notice that no PSHost object is supplied to the
      // CreateRunspace method so the default host is used. See the Host
      // samples for more information on creating your own custom host.
      using (Runspace myRunSpace = RunspaceFactory.CreateRunspace(iss))
      {
        myRunSpace.Open();

        // Create a PowerShell object.
        using (PowerShell powershell = PowerShell.Create())
        {
          // Add the snap-in cmdlet and specify the runspace.
          powershell.AddCommand("GetProcPSSnapIn01\\get-proc");
          powershell.Runspace = myRunSpace;

          // Run the cmdlet synchronously.
          Collection<PSObject> results = powershell.Invoke();

          Console.WriteLine("Process              HandleCount");
          Console.WriteLine("--------------------------------");

          // Display the results.
          foreach (PSObject result in results)
          {
            Console.WriteLine(
                              "{0,-20} {1}",
                              result.Members["ProcessName"].Value,
                              result.Members["HandleCount"].Value);
          }
        }

        // Close the runspace to release any resources.
        myRunSpace.Close();
      }
      System.Console.WriteLine("Hit any key to exit...");
      System.Console.ReadKey();
    }
  }
}

Vedere ancheSee Also

Scrittura di un'applicazione host di Windows PowerShellWriting a Windows PowerShell Host Application