How to add Powershell SnapIn in c#
Asked Answered
V

2

6

I have a Powershell Script which is stored in a string called "script" with the content:

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

My C# Code:

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();

If I debug the code I get the following exception:

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

If I run the script manually and add the snap-in it works fine

Venireman answered 24/11, 2011 at 8:15 Comment(2)
I'm getting a Cannot load Windows PowerShell snap-in Microsoft.Exchange.Management.PowerShell.E2010 because of the following error: The type initializer for 'Microsoft.Exchange.Data.Directory.Globals' threw an exception. has anyone encountered that?Limann
Ask a new question, @Limann - this is not the right place.Russianize
R
5

That error message also means that you are trying to load a 32bit snapin from a 64bit powershell instance (or vice-versa.) In your case, you need to compile your program to target the correct bitness: x86. AnyCPU will default to the bitness of your machine, which is 64 bit.

Russianize answered 24/11, 2011 at 18:42 Comment(1)
When I switch it to x86 I get Could not load file or assembly 'MyProject' or one of its dependencies. An attempt was made to load a program with an incorrect format. using VS2010. Any suggestions?Limann
O
1

I had a similar issue... I was trying to execute a custom powershell cmdlet from a console application. I verified that my console is set to 4.0 framework and the powershell was 3.0. It turned out that the issue was "prefer 32 bit" setting in bild tab of the console was set to true. I unchecked it and everything worked!

Obediah answered 11/11, 2013 at 20:28 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.