运行 使用 Powershell 的 c# 中的 Powershell 脚本 Class

Run Powershell Script in c# using Powershell Class

我知道这个问题被问了很多次。但是 none 的解决方案帮助了我。

我的脚本不会 运行。 当我用 Powershell 执行它时,它起作用了。 但不适用于此 C# 代码:

using (PowerShell ps = PowerShell.Create())
{
    ps.AddScript(@"& 'MyPathToTheScript'");
    ps.Invoke();
}

如您所见,我尝试了 AddScript 和 AddCommand,但都不会 运行 我的脚本。 我按照我在 Microsoft Docs 上看到的说明进行操作:

Adding and invoking commands

除了我不需要任何参数:)

编辑#1

我的 PowerShell 脚本需要 运行 作为管理员。这可能是问题所在吗?该脚本 运行s,但抛出错误,原因是 'Access denied'?

我可以从 C# 执行此操作还是必须在脚本中添加此操作?

感谢您的帮助:)

我没有使用过 SDK,但如 the documents 所述,似乎包括 AddScript 在内的方法创建了一个命令管道,并且应该在它们上调用 Invoke

所以也许你应该像下面这样使用它:

using (PowerShell ps = PowerShell.Create().AddScript("YourPathToTheScript"))
{
    ps.Invoke();
}

我在这个帖子中找到了我的解决方案。该脚本在后面执行,但没有找到 New-LocalUser 函数,所以我用谷歌搜索发现,Powershell 必须在 64 位中 运行。我将下面 link 中的代码添加到我的 C# 代码中,它起作用了:)