Skapa en InitialSessionState

PowerShell-kommandon körs i ett runspace. Om du vill ha PowerShell i ditt program måste du skapa ett System.Management.Automation.Runspaces.Runspace-objekt. Varje körningsutrymme har ett system.Management.Automation.Runspaces.InitialSessionState-objekt associerat med det. InitialSessionState anger egenskaper för runspace, till exempel vilka kommandon, variabler och moduler som är tillgängliga för det runspace.

Skapa en initialSessionState som är standard

Metoderna CreateDefault och CreateDefault2 för klassen InitialSessionState kan användas för att skapa ett InitialSessionState-objekt. Metoden CreateDefault skapar en InitialSessionState med alla inbyggda kommandon inlästa, medan metoden CreateDefault2 endast läser in de kommandon som krävs för att vara värd för PowerShell (kommandona från microsoft.PowerShell.Core-modulen).

Om du vill begränsa de kommandon som är tillgängliga i värdprogrammet ytterligare måste du skapa ett begränsat körningsutrymme. Mer information finns i Skapa ett begränsat runspace.

Följande kod visar hur du skapar en InitialSessionState, tilldelar den till ett runspace, lägger till kommandon i pipelinen i det runspace och anropar kommandona. Mer information om hur du lägger till och anrop av kommandon finns i Lägga till och använda kommandon.

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.
}

Se även

Skapa ett begränsat körningsutrymme

Lägga till och anropa kommandon