InitialSessionState létrehozása

A PowerShell-parancsok egy runspace-en futnak. A PowerShell alkalmazásban való futtatásához létre kell hoznia egy System.Management.Automation.Runspaces.Runspace objektumot. Minden runspace rendelkezik társított System.Management.Automation.Runspaces.InitialSessionState objektummal. Az InitialSessionState megadja a runspace jellemzőit, például hogy mely parancsok, változók és modulok érhetők el az adott runspace-hez.

Alapértelmezett InitialSessionState létrehozása

Az InitialSessionState osztály CreateDefault és CreateDefault2 metódusával létrehozható egy InitialSessionState objektum. A CreateDefault metódus létrehoz egy InitialSessionState-t az összes betöltött beépített paranccsal, míg a CreateDefault2 metódus csak a PowerShell gazdagépéhez szükséges parancsokat (a Microsoft.PowerShell.Core modul parancsai) tölt be.

Ha tovább szeretné korlátozni a gazdaalkalmazásban elérhető parancsokat, korlátozott runspace-t kell létrehoznia. További információ: Korlátozott runspace létrehozása.

Az alábbi kód bemutatja, hogyan hozhat létre egy InitialSessionState-t, hogyan rendelheti hozzá egy runspace-hez, hogyan adhat hozzá parancsokat a folyamathoz a runspace-ban, és hogyan hívhatja meg a parancsokat. További információ a parancsok hozzáadásáról és a parancsokról: Parancsok hozzáadása és invoking (Parancsok hozzáadása és invoking ).

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

Lásd még:

Korlátozott futási tér létrehozása

Meghívó parancsok hozzáadása