如何在.NET 4.7.2 WinForms项目嵌入PowerShell及.NET 5依赖包选型
两种.NET环境集成PowerShell能力的依赖包及实现方案
.NET Framework 4.7.2 Windows Forms项目解决方案
你遇到的类型找不到问题,是因为安装了不兼容.NET Framework的高版本System.Management.Automation包,正确操作如下:
- 先卸载已安装的所有System.Management.Automation相关NuGet包
- 安装官方适配包
Microsoft.PowerShell.5.1.ReferenceAssemblies,该包对应Windows系统内置的PowerShell 5.1版本,专门兼容.NET Framework 4.x系列 - 安装完成后,在代码中引用
using System.Management.Automation;即可正常使用Runspace、PowerShell等核心类型
简单执行示例:
using (PowerShell powerShell = PowerShell.Create()) { // 添加要执行的PowerShell脚本 powerShell.AddScript("Get-ChildItem C:\\"); // 执行并获取返回结果 var executeResult = powerShell.Invoke(); // 遍历处理结果 foreach (var item in executeResult) { Console.WriteLine(item.BaseObject.ToString()); } }
注意:该方案依赖系统内置的PowerShell 5.1,Win10/11、Windows Server 2016及以上版本系统默认已预装,无需额外安装。
.NET 5 控制台项目解决方案
.NET 5属于跨平台.NET体系,对应使用PowerShell 7+的官方SDK,操作如下:
- 安装NuGet包
Microsoft.PowerShell.SDK,优先选择稳定版本即可,如7.2.x、7.3.x系列 - 安装完成后同样引用
System.Management.Automation命名空间,核心API用法和.NET Framework场景基本一致,代码复用率很高
注意:该包为自包含依赖,发布时会自动携带相关运行时,无需目标机器提前安装PowerShell 7。
内容的提问来源于stack exchange,提问作者BuddyJoe
相关产品推荐
相关产品推荐

