Powershell Addscript和从C#调用不会在命令行上显示结果

时间:2018-10-25 15:25:42

标签: c# powershell

我有下面的powershell脚本文件

C:\ user \ deskptop \ script1.ps1

该脚本的内容如下:

get-process

我正在尝试创建C#控制台应用程序以在控制台上获取此脚本的输出。当我在C#外部执行脚本时,它运行良好,但是当我在C#中执行脚本时,它不会产生任何结果。我正在尝试使用addscript并调用。

C#代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Management.Automation;
using System.Collections.ObjectModel;


namespace InvokePowerShellScriptFrmCsharp1
{
    class Program
    {
        static void Main(string[] args)
        {
            string script = @"C:\\Users\\Desktop\\script1.ps1";


            PowerShell shell = PowerShell.Create();

            shell.AddScript(script);
            //shell.AddCommand("get-process");

            shell.Invoke();
            //shell.AddScript(script).Invoke();

            Collection<PSObject> pSObjects = shell.Invoke();

            foreach (PSObject p in pSObjects)
            {
                Console.WriteLine(p.ToString());
            }
            Console.WriteLine("Press any key to continue");
            Console.ReadLine();
        }
    }
}

当我执行上述操作时,会显示“按任意键继续”控制台,但在此之前没有输出。

但是如果我只是尝试下面的方法,我会得到结果

shell.addcommand("get-process");

如果powershell脚本中有多个命令,那么我希望将来与addscript coz一起使用,那么我需要能够从C#执行脚本以获得所需的结果。

我尝试了许多链接来尝试研究,但似乎并没有使它起作用。

https://blogs.msdn.microsoft.com/kebab/2014/04/28/executing-powershell-scripts-from-c/

https://www.reddit.com/r/csharp/comments/692mb1/running_powershell_scripts_in_c/

有人可以让我知道我哪里可能出问题了。

1 个答案:

答案 0 :(得分:1)

尝试先加载脚本内容,然后将其传递给AddScript方法:

string script = File.ReadAllText(@"C:\Scripts\script1.ps1");