【问题标题】:Invoke response empty when execute PowerShell scripts in C#在 C# 中执行 PowerShell 脚本时调用响应为空
【发布时间】:2022-01-04 10:02:45
【问题描述】:

我目前正在编写一些代码来使用 C# 执行 PowerShell。

这是我的代码

            Runspace runspace = RunspaceFactory.CreateRunspace();

            runspace.Open();

            // create a pipeline and feed it the script text
            PowerShell ps = PowerShell.Create();

            ps.Commands.AddScript(scriptText);

           // execute the script
            Collection<PSObject> results = ps.Invoke();

            //Close the runspace
            runspace.Close();

            // convert the script result into a single string
            StringBuilder stringBuilder = new StringBuilder();
            
            foreach (PSObject obj in results)
            {
                stringBuilder.AppendLine(obj.ToString());
            }
            return stringBuilder.ToString();

我将通过 scriptText 变量传递我的命令。

我尝试了一些命令,例如“Get-Process”、“Get-Service”……,效果很好。

但是当我从GetBIOS module 尝试“Get-BIOS”时,它没有。它返回一个空结果。

我以管理员权限在系统的 PowerShell 上运行“Get-BIOS”命令,它显示了很多我想要的信息。

到目前为止我已经尝试过:

-在执行时使用 app.manifest 文件要求管理员权限

<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />

-或者尝试先执行这个先安装模块

scriptText = "安装模块 GetBIOS"

然后执行

scriptText = "获取 BIOS"

但它们都不起作用。

我该如何解决这个问题,或者我们可以有其他方法吗?

提前致谢。

【问题讨论】:

  • 您可以从解决它为什么不返回任何内容开始:在调用ps.Invoke() 后检查ps.HadErrorsps.Streams.Error
  • 哦,我看到“术语 'Get-BIOS' 未被识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,或者如果路径已包含,请验证路径是否正确,然后重试。”错误。谢谢。

标签: c# powershell invoke bios


【解决方案1】:

我想通了。

只需尝试更改项目的目标框架。

我已更改为 .NET 4.8 并且可以正常工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-15
    • 2018-12-16
    • 2018-02-22
    • 2019-04-16
    • 2012-05-31
    • 2021-10-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多