Is there a way to run PowerShell scripts from .net-core ?
I'm trying to run a PowerShell script in a new .net core 'website\api'. From what I can tell in order to run PowerShell on .net we need to add the
System.Management.Automation namespace.
This isn't possible for .net core ( or I haven't found the appropriate way to add it). There are a couple of NuGet packages which are also aimed at adding this DLL to project but those aren't compatible with .net core either. Is there a way to do this on .net core ? Here are some links I've tried but none of them are .net core specific:
http://www.powershellmagazine.com/2014/03/18/writing-a-powershell-module-in-c-part-1-the-basics/
Referencing system.management.automation.dll in Visual Studio
https://www.nuget.org/packages/System.Management.Automation/
PowerShell on Linux and macOS uses . NET core, which is a subset of the full . NET Framework on Microsoft Windows. This is significant because PowerShell provides direct access to the underlying framework types and methods.
Windows PowerShell provides syntax that allows you to create . NET objects and then explore the members of those . NET objects. You have seen many examples in earlier chapters of using the get-member cmdlet to explore the members of objects.
Looks like it is well supported as of .NET Core 2.0 and PowerShell 6 Beta 3 (although it was supported in Beta 1 and 2 also but not as easily), here is a link to the Host PowerShell documentation in the GitHub repo
And they give a good sample application showing it running with .NET Core 2.0 and PowerShell Core v6.0.0-beta.3 and Later:
https://github.com/PowerShell/PowerShell/tree/master/docs/host-powershell
In order to get the correct packages into my NuGet package list I did need to add powershell-core as a new NuGet repository location which was:
https://powershell.myget.org/F/powershell-core/api/v3/index.json
I could then install the NuGet packages:
install-package microsoft.powershell.sdk -version 6.0.0-rc install-package microsoft.powershell.commands.diagnostics -version 6.0.0-rc install-package microsoft.wsman.management -version 6.0.0-rc
All three of these dependencies were required and then I could execute the following simple PowerShell command in my asp.net core MVC Web Application:
public class PowerShellHelper { public void Execute(string command) { using (var ps = PowerShell.Create()) { var results = ps.AddScript(command).Invoke(); foreach (var result in results) { Debug.Write(result.ToString()); } } } }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With