Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Команды PowerShell выполняются в пространстве выполнения. Чтобы разместить PowerShell в приложении, необходимо создать объект System. Management. Automation. пространства. пространство . Каждому пространству выполнения соответствует связанный с ним объект System. Management. Automation. пространства. InitialSessionState . InitialSessionState указывает характеристики пространства выполнения, например, какие команды, переменные и модули доступны для этого пространства выполнения.
Создание InitialSessionState по умолчанию
Методы CreateDefault и CreateDefault2 класса InitialSessionState можно использовать для создания объекта InitialSessionState . Метод CreateDefault создает объект InitialSessionState со всеми загруженными встроенными командами, а метод CreateDefault2 загружает только команды, необходимые для размещения PowerShell (команды из модуля Microsoft. PowerShell. Core).
Если вы хотите дополнительно ограничить команды, доступные в ведущем приложении, необходимо создать ограниченное пространство выполнения. Дополнительные сведения см. в разделе Создание ограниченного пространства выполнения.
В следующем коде показано, как создать InitialSessionState, присвоить ему пространство выполнения, добавить команды в конвейер в этом пространстве выполнения и вызвать команды. Дополнительные сведения о добавлении и вызове команд см. в разделе Добавление и вызов команд.
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.
}