возникают проблемы, когда C # вызывает сценарии powershell - PullRequest
0 голосов
/ 26 декабря 2018

Я создал консольное приложение (основано на .net core 2.1) для C #, вызывая скрипт Powershell, но получил значение NULL.Может кто-нибудь сказать мне, где / какой / Какой шаг является неправильным или пропущенным?

Ниже приведены подробности исключения:

Исключение

private static void Main(string[] args)
    {    //.net core 2.1
        string ScriptsText = @"C:\temp\getEvent.ps1";

        Runspace runspace = RunspaceFactory.CreateRunspace();
        runspace.Open();

        PowerShell shell = PowerShell.Create();
        shell.AddScript(ScriptsText);
        shell.Runspace = runspace;

        Collection<PSObject> psObjects = shell.Invoke();
        //format the psobjects to string object
        StringBuilder stringBuilder = new StringBuilder();
        foreach (PSObject obj in psObjects)
        {
            stringBuilder.AppendLine(obj.ToString());
        }
        runspace.Close();
        Console.WriteLine(stringBuilder.ToString());
    }

Переменная: psobjects должен содержать результат после вызова, но теперь показывает нулевое значение

Прикрепленное содержимое сценария powershell: C: \ temp \ getEvent.ps1:

$ result = Get-EventLog -LogNameСистема -Новая 5;return $ result

подготовленные различные сценарии PowerShell для целей тестирования

  1. часть командлета может работать правильно (см. скриншот ниже)
  2. часть командлета возвращаетсяnull при вызове C # (см. скриншот ниже)

Тот же код C # вызывает скрипт powershell, возвращает null

Тот же код C # вызывает скрипт powershell,return null

Тот же код C # вызывает скрипт powershell, возвращаемое значение

Тот же код C # вызывает скрипт powershell, возвращаемое значение

...