如何从 C# 程序运行 PowerShell 脚本?

Posted

技术标签:

【中文标题】如何从 C# 程序运行 PowerShell 脚本?【英文标题】:How to run a PowerShell script from a C# program? 【发布时间】:2018-10-10 14:18:50 【问题描述】:

我有一个 PowerShell 脚本,它接受用户输入作为用户凭据。它会提示一个窗口,要求输入用户名和密码。我想使用 C# 运行这个脚本。我该怎么做?

【问题讨论】:

我们不是千里眼。请将您的代码作为文本复制/粘贴到问题中。选择代码文本并使用 图标。请制作一个 MCVE。 ***.com/help/mcve 【参考方案1】:

您需要添加对System.Management.Automation 程序集* 和System.Collections.Objectmodel 的项目引用(用于执行输出)。

然后您需要为 PowerShell 类创建一个静态方法(注意:PowerShell 类实现了IDisposable,因此您需要将其包装在 using 块中):

using (PowerShell PowerShellInstance = PowerShell.Create())
    
    

使用添加脚本方法(PowerShellInstance.AddScript()) 添加您的脚本。

从那里您可以分别使用.Invoke().BeginInvoke() 同步或异步执行脚本。

在此处参考此 MSDN 博客:https://blogs.msdn.microsoft.com/kebab/2014/04/28/executing-powershell-scripts-from-c/

【讨论】:

以上是关于如何从 C# 程序运行 PowerShell 脚本?的主要内容,如果未能解决你的问题,请参考以下文章

从 C# 应用程序的脚本中调用 PowerShell 函数

如何从 C# 中的 powershell 脚本中捕获退出代码

c# - 如何在运行时从模块代码中获取 PowerShell 模块版本

从 PowerShell 调用时无法在 dll 中转换透明代理,但在 C# 控制台应用程序中成功

仅在非交互式运行时如何从 Powershell 脚本返回退出代码

C# PowerShell 无法仅在 Web 应用程序中连接到 AzureAD