У меня есть библиотека классов .NET Framework с некоторым кодом, использующим старый Powershell:
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...
}
Я пытаюсь перенести его на .NET Core, используя пакет Microsoft.Powershell.SDK
с Powershell Core.По большей части он работает нормально, но по понятным причинам не может запускать устаревшие команды powershell (add-pssnapin
и т. Д.).
Эта библиотека классов предназначена для использования на широком спектре машин, некоторыеиз них требуются те старые команды powershell для работы и другие, требующие использования Powershell Core.Как мне этого добиться?
Единственное решение, которое я могу придумать, - это сделать два отдельных проекта, один для .NET Framework, а другой для .NET Core, но с двумя проектами с одинаковым кодом (кроме 4-5 строк с этими старыми командами) кажется плохой идеей.Есть ли лучший способ сделать это?