Creazione di un InitialSessionStateCreating an InitialSessionState

I comandi di PowerShell vengono eseguiti in un spazio.PowerShell commands run in a runspace. Per ospitare PowerShell nell'applicazione, è necessario creare un oggetto System. Management. Automation. Runspaces. spazio .To host PowerShell in your application, you must create a System.Management.Automation.Runspaces.Runspace object. A ogni spazio è associato un oggetto System.Management.Automation.Runspaces.InitialSessionState .Every runspace has an System.Management.Automation.Runspaces.InitialSessionState object associated with it. InitialSessionState specifica le caratteristiche di spazio, ad esempio i comandi, le variabili e i moduli disponibili per tale spazio.The InitialSessionState specifies characteristics of the runspace, such as which commands, variables, and modules are available for that runspace.

Creare un InitialSessionState predefinitoCreate a default InitialSessionState

Per creare un oggetto InitialSessionState , è possibile usare i metodi CreateDefault e CreateDefault2 della classe InitialSessionState .The CreateDefault and CreateDefault2 methods of the InitialSessionState class can be used to create an InitialSessionState object. Il metodo CreateDefault crea un InitialSessionState con tutti i comandi incorporati caricati, mentre il metodo CreateDefault2 carica solo i comandi necessari per ospitare PowerShell (i comandi del modulo 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).

Se si desidera limitare ulteriormente i comandi disponibili nell'applicazione host, è necessario creare un spazio vincolato.If you want to further limit the commands available in your host application you need to create a constrained runspace. Per informazioni, vedere creazione di un spazio vincolato.For information, see Creating a constrained runspace.

Il codice seguente illustra come creare un InitialSessionState, assegnarlo a un spazio, aggiungere comandi alla pipeline in tale spazio e richiamare i comandi.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. Per ulteriori informazioni sull'aggiunta e la chiamata di comandi, vedere aggiunta e richiamo di comandi.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.
}

Vedere ancheSee Also

Creazione di uno spazio di esecuzione vincolatoCreating a constrained runspace

Aggiunta e richiamo dei comandiAdding and invoking commands