【问题标题】:Run Powershell Script in c# using Powershell Class使用 Powershell 类在 c# 中运行 Powershell 脚本
【发布时间】:2021-10-13 17:48:16
【问题描述】:

我知道这个问题被问了很多。但是没有一个解决方案对我有帮助。

我的脚本不会运行。 当我使用 Powershell 执行它时,它可以工作。 但不是用这个 C# 代码:

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

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

Adding and invoking commands

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

编辑#1

我的 PowerShell 脚本,需要以管理员身份运行。这可能是问题吗?脚本运行,但由于“访问被拒绝”而引发错误?

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

感谢您的帮助:)

【问题讨论】:

  • 如果您有权限问题,使用非常简单的脚本进行测试可能会很有用,这样您就只测试 c# - powershell 集成。
  • 我找到了解决方案,这是因为 Powershell 没有以 64 位运行。现在它起作用了。我会发布解决方案

标签: c# powershell invoke execute


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

    enter link description here

    【讨论】:

      猜你喜欢
      • 2018-11-21
      • 1970-01-01
      • 2019-09-30
      • 2021-09-11
      • 1970-01-01
      • 2021-05-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多