嵌入 PowerShell C#(在工具箱中)

本文关键字:工具箱 PowerShell 嵌入 | 更新日期: 2023-09-27 18:33:46

我将嵌入式PowerShell控制台搜索到我的项目C#(从工具箱中添加(。我找到了一些简单的示例来执行命令并具有返回值(PowerShell。Create ((, AddScript, AddCommand, Invoke, ...(这很简单,但它不允许 inoput 用户。此外,上下文不会保留,并且在每次运行时都会创建一个新的控制台(丢失的根路径(。

我还找到了一个示例 PoshConsole,但它是一个完整的迷宫系统,它是用 xaml 制作的 - 我根本不掌握的技术(而且显然与经典表单不兼容 - 也许我犯了一个错误?

我们在这里,我希望已经清楚了 - 对不起,我是法国人事先谢谢。

嵌入 PowerShell C#(在工具箱中)

从 C# 执行 Powershell 称为托管 PS。当你托管 PS 并希望拥有某种 PS 和用户都直接交互的 UI 时,你需要实现一个"PSHost"(谷歌"Powershell Host"(。作为PSHost设计师,您需要决定使用哪种输入/输出技术。常见示例包括:GUI 和控制台样式的 UI。

然后,实现 PSHost 将允许在托管环境中运行的脚本访问 cmdlet,例如:write-hostread-host

实现 PSHost 的替代方法是在 C# 程序中执行所有 UI 输入/输出,并将 PS 用作脚本/执行引擎。

就保留上下文而言,每次实例化System.management.automation.powershell(通过Create()(时,您都会得到一个新的PS环境。若要不获取新环境,请不要创建新的 Powershell。

如果主机程序设计使得必须创建新的 Powershell,但仍希望保留上下文,则必须以编程方式保存/还原上下文。可以编写从 C# 调用的脚本来执行每个任务。保存脚本将是你在销毁 Powershell 之前在 Powershell 中执行的最后一件事,还原脚本将是你在新的 Powershell 中执行的第一件事。