RJ. RJ. - 10 months ago 63
C# Question

How do I install the Exchange Management Shell Module to run Powershell Exchange Scripts in code

I am struggling getting Exchange mManagement Shell commands to run in my C# code. Here' the problem.

I have access to a test Exchange Server running Exchange 2010.

I have run my Exchange Mgmt Shell commands directly on the server inside the Exchange Mgmt Shell
Simple Example: get-mailbox

I created a console app to run my PS commands

I placed the exe file on the Exchange Server and tried to run it

I get an error on the PSSnapInInfo info = rsConfig.AddPSSnapIn line of code:

//Creating and Opening a Runspace
RunspaceConfiguration rsConfig = RunspaceConfiguration.Create();
PSSnapInException snapInException = null;
PSSnapInInfo info = rsConfig.AddPSSnapIn("Microsoft.Exchange.Management.PowerShell.Admin", out snapInException);
Runspace myRunSpace = RunspaceFactory.CreateRunspace(rsConfig);

There is another post with this exact same issue but no real answer so I am starting this one.

The problem is simple. I can't add the snapin called "Microsoft.Exchange.Management.PowerShell.Admin". All the documentation I read on the net says this is the command that will work. In fact I found this post, http://msdn.microsoft.com/en-us/library/bb332449(EXCHG.80).aspx that is very straight forward and seems very simple. Did "Microsoft.Exchange.Management.PowerShell.Admin" go away in Exchange 2010? Is there another snapin I should be referencing? This should ber really simple but I can't get past this error.

BTW, the error I get is: "No snap-ins have been registered for Windows PowerShell version 2."

Any help would be appreciated.

Answer Source

Assuming the server is 64-bit, it might be related to how the snap-in was registered. For example, if you're running the x86 version of PowerShell it runs in WOW. Therefore, when you run InstallUtil to register the snap-in it gets registered specifically for x86, which in turn is not available to x64. Assuming this, if your C# application was compiled specifically for the x86 platform I would bet that it would work. This is one solution, but not always acceptable.

Ensure that you're running the correct version of PowerShell (x86/x64) and rerun the snap-in registration with the correct version of InstallUtil. For x64, you'll need to run the InstallUtil that lives under the .NET Framework64 directory.

One way to check you're in the correct version of PowerShell is to examine the environment variable, env:PROCESSOR_ARCHITECTURE in your shell.


Name                           Value
----                           -----


Name                           Value
----                           -----