Creación de un InitialSessionStateCreating an InitialSessionState

Los comandos de PowerShell se ejecutan en un espacio de ejecución.PowerShell commands run in a runspace. Para hospedar PowerShell en la aplicación, debe crear un objeto System. Management. Automation. Runspace. Runspace .To host PowerShell in your application, you must create a System.Management.Automation.Runspaces.Runspace object. Cada espacio de ejecución tiene un System.Management.Automation.Runspaces.Iniobjeto tialSessionState asociado a él.Every runspace has an System.Management.Automation.Runspaces.InitialSessionState object associated with it. InitialSessionState especifica características del espacio de ejecución, como qué comandos, variables y módulos están disponibles para ese espacio de ejecución.The InitialSessionState specifies characteristics of the runspace, such as which commands, variables, and modules are available for that runspace.

Crear un InitialSessionState predeterminadoCreate a default InitialSessionState

Los métodos CreateDefault y createdefault2) de la clase InitialSessionState se pueden usar para crear un objeto InitialSessionState .The CreateDefault and CreateDefault2 methods of the InitialSessionState class can be used to create an InitialSessionState object. El método CreateDefault crea una InitialSessionState con todos los comandos integrados cargados, mientras que el método createdefault2) solo carga los comandos necesarios para hospedar PowerShell (los comandos del módulo Microsoft. PowerShell. Core).The CreateDefault method creates an InitialSessionState with all of the built-in commands loaded, while the CreateDefault2 method loads only the commands required to host PowerShell (the commands from the Microsoft.PowerShell.Core module).

Si desea limitar aún más los comandos disponibles en la aplicación host, debe crear un espacio de ejecución restringido.If you want to further limit the commands available in your host application you need to create a constrained runspace. Para obtener más información, vea crear un espacio de ejecución restringido.For information, see Creating a constrained runspace.

En el código siguiente se muestra cómo crear un InitialSessionState, asignarlo a un espacio de ejecución, agregar comandos a la canalización en ese espacio de ejecución e invocar los comandos.The following code shows how to create an InitialSessionState, assign it to a runspace, add commands to the pipeline in that runspace, and invoke the commands. Para obtener más información sobre cómo agregar e invocar comandos, vea Agregar e invocar comandos.For more information about adding and invoking commands, see Adding and invoking commands.

namespace SampleHost
{
  using System;
  using System.Management.Automation;
  using System.Management.Automation.Runspaces;

  class HostP4b
  {
    static void Main(string[] args)
    {
      // Call the InitialSessionState.CreateDefault method to create
      // an empty InitialSessionState object, and then add the
      // elements that will be available when the runspace is opened.
      InitialSessionState iss = InitialSessionState.CreateDefault();
      SessionStateVariableEntry var1 = new
          SessionStateVariableEntry("test1",
                                    "MyVar1",
                                    "Initial session state MyVar1 test");
      iss.Variables.Add(var1);

      SessionStateVariableEntry var2 = new
          SessionStateVariableEntry("test2",
                                    "MyVar2",
                                    "Initial session state MyVar2 test");
      iss.Variables.Add(var2);

      // Call the RunspaceFactory.CreateRunspace(InitialSessionState)
      // method to create the runspace where the pipeline is run.
      Runspace rs = RunspaceFactory.CreateRunspace(iss);
      rs.Open();

      // Call the PowerShell.Create() method to create the PowerShell object,
      // and then specify the runspace and commands to the pipeline.
      // and create the command pipeline.
      PowerShell ps = PowerShell.Create();
      ps.Runspace = rs;
      ps.AddCommand("Get-Variable");
      ps.AddArgument("test*");

      Console.WriteLine("Variable             Value");
      Console.WriteLine("--------------------------");

      // Call the PowerShell.Invoke() method to run
      // the pipeline synchronously.
      foreach (PSObject result in ps.Invoke())
      {
        Console.WriteLine("{0,-20}{1}",
            result.Members["Name"].Value,
            result.Members["Value"].Value);
      } // End foreach.

      // Close the runspace to free resources.
      rs.Close();

    } // End Main.
  } // End SampleHost.
}

Consulte tambiénSee Also

Creación de un espacio de ejecución restringidoCreating a constrained runspace

Adición e invocación de comandosAdding and invoking commands