Использование команды PowerShell «Get-LocalGroup» в C # - PullRequest
0 голосов
/ 22 мая 2019

, когда я пытаюсь использовать командлет PowerShell «Get-LocalGroup» в моем приложении на c #, он не будет выводить вывод этого командлета на мою консоль.

Я уже включил Management.AutomationNuGet.Процесс сборки работает без проблем.Я также попытался запустить встроенный .exe с правами администратора в режиме отладки и выпуска.

using System.Collections.ObjectModel;
using System.Management.Automation;

namespace RunPowershell
{
    class Program
    {
        static void Main(string[] args)
        { 
            using (PowerShell PowerShellInstance = PowerShell.Create())
            {
                PowerShellInstance.AddScript("Get-LocalGroup");

                Collection<PSObject> PSOutput = PowerShellInstance.Invoke();

                // loop through each output object item
                foreach (PSObject outputItem in PSOutput)
                {
                    if (outputItem != null)
                    {
                            System.Console.WriteLine("-"+outputItem.BaseObject);
                    }
                }
                System.Console.WriteLine("Hit any key to exit.");
                System.Console.ReadKey();
            }
        }
    }
}

Я не вижу существенной ошибки в окне отладки, но также нет вывода "Get-LocalGroup".

1 Ответ

0 голосов
/ 22 мая 2019

Отсутствие вывода из Get-LocalGroup связано с целевой загрузкой ЦП вашего проекта.Если это x86 или Any CPU, то Get-localGroup не будет работать, поскольку он работает только на хосте x64.Вы можете увидеть это в действии, если откроете консоль x86 PowerShell - она ​​будет жаловаться, что такой команды нет.Вы также можете увидеть ошибки, перечисленные в потоке PowerShellInstance.Streams.Error в своем проекте C #.

После того, как вы исправите таргетинг, вам необходимо позаботиться об извлечении / форматировании результатов вручную, поскольку Powershell сохраняет их вколлекция, а не как простые свойства.Прочитайте мой предыдущий ответ о том, как упростить себе жизнь, преобразовав результаты в пользовательские объекты:

Работа с CimObjects с PowerShell внутри C #

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...