Есть ли альтернатива. NET Core System.Management.Automation.RunspaceInvoke? - PullRequest
1 голос
/ 17 июня 2020

Я сейчас портирую библиотеку с. NET Framework на. NET Core. Версия библиотеки для Framework использует некоторые пространства выполнения в Powershell, с которыми я не очень хорошо знаком (ради вопроса оставьте в стороне достоинства использования Powershell в Core). Соответствующий код выглядит следующим образом:

using System.Management.Automation;
using System.Management.Automation.Runspaces;
...
            RunspaceConfiguration runspaceConfiguration = RunspaceConfiguration.Create();

            using (Runspace runspace = RunspaceFactory.CreateRunspace(runspaceConfiguration))
            {
                runspace.Open();
                using (RunspaceInvoke invoker = new RunspaceInvoke(runspace))
                {
                    output = invoker.Invoke("Set-ExecutionPolicy Unrestricted");
                    PrintOutput(output);
...

Я знаю, что в. NET Core функция RunspaceConfiguration устарела в пользу использования InitialSessionState. Но я не уверен, что делать с RunspaceInvoke, которого нет (насколько мне известно) в. NET Core. Что можно использовать для вызова пространства выполнения (или выполнения подходящего обходного пути) в. NET Core?

1 Ответ

1 голос
/ 18 июня 2020

Runspace - это просто экземпляр Powershell.

Чтобы создать экземпляр PowerShell в. NET Core, используйте класс PowerShell System.Management.Automation с его методом PowerShell.Create ():

            InitialSessionState runspaceConfiguration = InitialSessionState.Create();

            using (Runspace runspace = RunspaceFactory.CreateRunspace(runspaceConfiguration))
            {
                runspace.Open();
                using (PowerShell invoker = PowerShell.Create(runspace))
                {

                    output = invoker.Invoke("Set-ExecutionPolicy Unrestricted");
                    PrintOutput(output);
...