首页 > 解决方案 > 尝试从 .NET Framework 移植现有的依赖于 powershell 的类库

问题描述

我有一些使用旧 Powershell 的代码的 .NET Framework 类库:

using System.Management.Automation.Runspaces;
using System.Management.Automation;

//some code executing powershell commands in runspaces and processing results, similar to this:
    var runspace = RunspaceFactory.CreateRunspace();
            using (var powerShell = PowerShell.Create())
            {
                powerShell.Runspace = runspace;
                powerShell.Commands.AddScript(psscript);
                results = powerShell.Invoke();
                //process results, etc...
            }

我正在尝试使用Microsoft.Powershell.SDK带有 Powershell Core 的包将其移植到 .NET Core。它在大多数情况下都可以正常工作,但由于显而易见的原因,它无法运行旧的 powershell 命令(add-pssnapin等)。

此类库旨在用于广泛的机器上,其中一些需要那些旧的 powershell 命令才能工作,而另一些需要使用 Powershell Core。我如何实现这一目标?

我能想到的唯一解决方案是制作两个单独的项目,其中一个用于 .NET Framework,另一个用于 .NET Core,但是拥有两个具有相同代码的项目(除了 4-5 行带有这些旧命令)似乎很糟糕主意。有没有更好的方法来实现这一点?

标签: c#.netpowershell.net-core

解决方案


推荐阅读