Как добавить Powershell SnapIn в c # - PullRequest
6 голосов
/ 24 ноября 2011

У меня есть скрипт Powershell Script, который хранится в строке «script» с содержанием:

get-user |  out-file C:\Users\user\Desktop\user.txt -append

Мой код C #:

RunspaceConfiguration runConfig = RunspaceConfiguration.Create();
                PSSnapInException psEx = null;
                runConfig.AddPSSnapIn("VMWare.View.Broker", out psEx);
                Runspace runspace = RunspaceFactory.CreateRunspace(runConfig);
                runspace.Open();
                Pipeline pipeline = runspace.CreatePipeline();
                pipeline.Commands.AddScript(script);
                Collection<PSObject> results = new Collection<PSObject>();
                results = pipeline.Invoke();
                runspace.Close();

Если я отлаживаю код, яполучить следующее исключение:

No snap-ins have been registered for Windows Powershell Version 2

Если я запускаю скрипт вручную и добавляю оснастку, он работает нормально

Ответы [ 2 ]

5 голосов
/ 24 ноября 2011

Это сообщение об ошибке также означает, что вы пытаетесь загрузить 32-битную оснастку из 64-битного экземпляра PowerShell (или наоборот). В вашем случае вам необходимо скомпилировать вашу программу для получения правильной битности: x86. AnyCPU по умолчанию использует битность вашей машины, которая составляет 64 бита.

1 голос
/ 12 ноября 2013

У меня была похожая проблема ... Я пытался выполнить пользовательский командлет powershell из консольного приложения. Я проверил, что моя консоль установлена ​​на 4.0 framework, а powershell был 3.0. Оказалось, что проблема заключалась в том, что параметр «предпочесть 32-битный» на вкладке bild консоли был установлен в значение true. Я снял галочку и все заработало!

...