Перечисление бросков свойств объекта PowerShell - PullRequest
2 голосов
/ 22 июня 2011

У меня есть эта простая программа, использующая powershell. Это просто подтверждение концепции, я использую тот же код в более крупном приложении. Проблема в том, что значения некоторых свойств в коде ниже не могут быть прочитаны. Чтение свойства Value вызывает исключение GetValueInvocationException.

На самом деле это даже происходит с одним из примеров проектов Microsoft, который поставляется с PowerShell SDK. Почему это так и есть ли решение?

static void Main(string[] args)
    {
        var powerShell = System.Management.Automation.PowerShell.Create();

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

        powerShell.Runspace = runspace;
        powerShell.AddScript("Get-Process");
        var results = powerShell.Invoke();

        foreach (var prop in results.First().Properties)
        {
            try
            {
                Console.WriteLine(prop.Name + " : " + prop.Value);
            }
            catch (Exception e)
            {
                Console.WriteLine(string.Format("Exception {0} on {1}", e.GetType(), prop.Name));
            }
        }

        Console.ReadKey();
    }

1 Ответ

2 голосов
/ 22 июня 2011

Это либо из-за замысла (в конце концов, это бросок получателя свойства целевого объекта), либо из-за проблемы (если этот эффект не является преднамеренным в PowerShell).В обоих случаях мы не можем ничего с этим поделать.То есть мы должны использовать подход try / catch в таких случаях.Один из вариантов, который у нас есть, - отправить отчет по адресу: https://connect.microsoft.com/PowerShell/Feedback

Попробуйте получить целевой объект в своем коде C # (это System.Diagnostics.Process, получить его через свойство BaseObject объекта результата) иполучить доступ к этой собственности преступника.Скорее всего, тоже.

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