Przykład Runspace06Runspace06 Sample

Ten przykład pokazuje, jak dodać moduł doSystem.Management.Automation.Runspaces.Iniobiektu tialsessionstate , aby moduł został załadowany po otwarciu obszaru działania.This sample shows how to add a module to an System.Management.Automation.Runspaces.Initialsessionstate object so that the module is loaded when the runspace is opened. Moduł udostępnia Get-Proc polecenie cmdlet (zdefiniowane przez przykład GetProcessSample02), które jest uruchamiane synchronicznie przy użyciu obiektu System. Management. Automation. PowerShell .The module provides a Get-Proc cmdlet (defined by the GetProcessSample02 Sample) that is run synchronously by using a System.Management.Automation.Powershell object.

WymaganiaRequirements

Ten przykład wymaga środowiska Windows PowerShell 2,0.This sample requires Windows PowerShell 2.0.

DemonstracjeDemonstrates

Ten przykład ilustruje następujące kwestie.This sample demonstrates the following.

PrzykładExample

Ten przykład tworzy obszar działania, który używa System.Management.Automation.Runspaces.Iniobiektu tialsessionstate do definiowania elementów, które są dostępne po otwarciu obszaru działania.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. W tym przykładzie moduł, który definiuje polecenie cmdlet Get-Proc, jest dodawany do stanu sesji początkowej.In this sample, a module 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 Runspace06
  {
    /// <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 binary module that is loaded by the initial session state.
    /// </summary>
    /// <param name="args">Parameter not used.</param>
    /// <remarks>
    /// This sample assumes that user has coppied the GetProcessSample02.dll
    /// that is produced by the GetProcessSample02 sample to the current
    /// directory.
    /// This sample demonstrates the following:
    /// 1. Creating a default initial session state.
    /// 2. Adding a module 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 module's get-proc cmdlet to the PowerShell object.
    /// 6. Running the command synchronously.
    /// 7. 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 and add the module.
      InitialSessionState iss = InitialSessionState.CreateDefault();
      iss.ImportPSModule(new string[] { @".\GetProcessSample02.dll" });

      // 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 cmdlet and specify the runspace.
          powershell.AddCommand(@"GetProcessSample02\get-proc");
          powershell.Runspace = myRunSpace;

          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();
    }
  }
}

Zobacz teżSee Also

Pisanie aplikacji hosta programu Windows PowerShellWriting a Windows PowerShell Host Application