Creating an InitialSessionState (Criar um espaço de execução InitialSessionState)

Os comandos PowerShell funcionam num espaço de produção. Para hospedar o PowerShell na sua aplicação, tem de criar um objeto System.Management.Automation.Runspaces.Runspaces.Runspaces. Cada espaço de funcionação tem um sistema.Management.Automation.Runspaces.InitialSessionState objeto associado a ele. O Estado de Sessão Inicial especifica características do espaço de execução, tais como os comandos, variáveis e módulos disponíveis para esse espaço de funcionamento.

Criar um Estado de Sessão Inicial predefinido

Os métodos CreateDefault e CreateDefault2 da classe InitialSessionState podem ser usados para criar um objeto Iniciais do Estado de Sessão. O método CreateDefault cria um Estado de Sessão Inicial com todos os comandos incorporados carregados, enquanto o método CreateDefault2 carrega apenas os comandos necessários para hospedar o PowerShell (os comandos do módulo Microsoft.PowerShell.Core).

Se quiser limitar ainda mais os comandos disponíveis na sua aplicação de anfitrião, precisa de criar um espaço de funcionamento limitado. Para obter informações, consulte criar um espaço de funcionação restrito.

O código que se segue mostra como criar um Estado de Sessão Inicial, atribuí-lo a um espaço de execução, adicionar comandos ao pipeline nesse espaço de funcionamento e invocar os comandos. Para obter mais informações sobre a adição e invocação de comandos, consulte adicionar e invocar comandos.

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 também

Creating a constrained runspace (Criar um espaço de execução restrito)

Adding and invoking commands (Adicionar comandos de invocação)