Как установить модуль командной консоли Exchange для запуска сценариев Powershell Exchange в коде - PullRequest
1 голос
/ 26 августа 2010

Я пытаюсь заставить команды Exchange mManagement Shell работать в моем коде C #. Здесь проблема.

У меня есть доступ к тестовому серверу Exchange Server под управлением Exchange 2010.

Я выполнил свои команды 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? Есть ли еще один оснастка, на которую я должен ссылаться? Это должно быть очень просто, но я не могу обойти эту ошибку.

Кстати, ошибка, которую я получаю: "Никаких оснасток для Windows PowerShell версии 2 не зарегистрировано."

Любая помощь будет оценена.

1 Ответ

2 голосов
/ 26 августа 2010

Если сервер 64-битный, это может быть связано с тем, как была зарегистрирована оснастка. Например, если вы используете версию PowerShell для x86, она работает в WOW. Поэтому при запуске InstallUtil для регистрации оснастки она регистрируется специально для x86, который, в свою очередь, недоступен для x64. Если предположить, что если ваше приложение C # было скомпилировано специально для платформы x86, я бы поспорил, что оно будет работать. Это одно решение, но не всегда приемлемое.

Убедитесь, что вы используете правильную версию PowerShell (x86 / x64) и повторно запустите регистрацию оснастки с правильной версией InstallUtil. Для x64 вам нужно запустить InstallUtil, который находится в каталоге .NET Framework64 .

Один из способов убедиться, что вы находитесь в правильной версии PowerShell, - это проверить переменную среды env: PROCESSOR_ARCHITECTURE в вашей оболочке.

64

> get-item env:PROCESSOR_ARCHITECTURE
Name                           Value
----                           -----
PROCESSOR_ARCHITECTURE         AMD64

x86:

> get-item env:PROCESSOR_ARCHITECTURE
Name                           Value
----                           -----
PROCESSOR_ARCHITECTURE         x86
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...