Дополнение и вызов Powershell из C # не отображают результат в командной строке - PullRequest
0 голосов
/ 25 октября 2018

У меня есть приведенный ниже файл сценария powershell

C: \ user \ deskptop \ script1.ps1

Содержимое сценария ниже:

get-process

Я пытаюсь создать консольное приложение C #, чтобы получить вывод этого скрипта на консоль.Когда я выполняю скрипт вне C #, он работает нормально, но когда я выполняю его внутри C #, он ничего не производит.я пытаюсь использовать addcript и вызывать.

код 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");

Я хочу, чтобы это работало с addcript coz в будущем, если в скрипте powershell будет более одной команды, тогдамне нужно быть в состоянии выполнить скрипт из 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 голосов
/ 25 октября 2018

Попробуйте сначала загрузить содержимое скрипта, а затем передать его в метод AddScript:

string script = File.ReadAllText(@"C:\Scripts\script1.ps1");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...