System.Management.Automation.RunspaceInvoke 是否有 .NET Core 替代品?
Is there a .NET Core alternative to System.Management.Automation.RunspaceInvoke?
我目前正在将一个库从 .NET Framework 移植到 .NET Core。该库的框架版本使用了 Powershell 中的一些运行空间,我对此不是很熟悉(为了这个问题,抛开在 Core 中使用 Powershell 的优点)。相关代码如下
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 中调用运行空间(或执行一些合适的解决方法)的方法是什么?
Runspace 只是 Powershell 的一个实例。
要在 .NET Core 中创建 PowerShell 实例,请使用 System.Management.Automation 的 PowerShell class 及其 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);
我目前正在将一个库从 .NET Framework 移植到 .NET Core。该库的框架版本使用了 Powershell 中的一些运行空间,我对此不是很熟悉(为了这个问题,抛开在 Core 中使用 Powershell 的优点)。相关代码如下
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 中调用运行空间(或执行一些合适的解决方法)的方法是什么?
Runspace 只是 Powershell 的一个实例。
要在 .NET Core 中创建 PowerShell 实例,请使用 System.Management.Automation 的 PowerShell class 及其 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);