我正在努力让Exchange mManagement Shell命令在我的C#代码中运行。这是'问题所在。
我可以访问运行Exchange 2010的测试Exchange Server。
我已直接在Exchange Mgmt Shell内的服务器上运行Exchange Mgmt Shell命令 简单示例:get-mailbox
我创建了一个控制台应用程序来运行我的PS命令
我将exe文件放在Exchange Server上并尝试运行它
我在PSSnapInInfo info = rsConfig.AddPSSnapIn代码行中收到错误
//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);
myRunSpace.Open();
还有另一篇帖子有这个完全相同的问题,但没有真正的答案,所以我开始这个。
问题很简单。我无法添加名为“Microsoft.Exchange.Management.PowerShell.Admin”的管理单元。我在网上看到的所有文档都说这是可行的命令。事实上,我发现这篇文章http://msdn.microsoft.com/en-us/library/bb332449(EXCHG.80).aspx非常简单,看起来非常简单。 “Microsoft.Exchange.Management.PowerShell.Admin”在Exchange 2010中消失了吗?我应该引用另一个snapin吗?这应该很简单,但我无法克服这个错误。
BTW,我得到的错误是:“没有为Windows PowerShell版本2注册任何管理单元。”
任何帮助都将不胜感激。
答案 0 :(得分:2)
假设服务器是64位,则可能与管理单元的注册方式有关。例如,如果您运行的是x86版本的PowerShell,它将在WOW中运行。因此,当您运行InstallUtil以注册管理单元时,它会专门为x86注册,而x86则无法使用x64。假设这个,如果您的C#应用程序是专门为x86平台编译的,我敢打赌它会起作用。这是一种解决方案,但并不总是可以接受。
确保您运行的是正确版本的PowerShell(x86 / x64),并使用正确版本的InstallUtil重新运行管理单元注册。对于x64,您需要运行位于.NET Framework64 目录下的InstallUtil。
检查您是否使用正确版本的PowerShell的一种方法是检查shell中的环境变量env:PROCESSOR_ARCHITECTURE。
64:
> get-item env:PROCESSOR_ARCHITECTURE
Name Value
---- -----
PROCESSOR_ARCHITECTURE AMD64
86:
> get-item env:PROCESSOR_ARCHITECTURE
Name Value
---- -----
PROCESSOR_ARCHITECTURE x86