Я разработал службу Windows, разработанную в Visual Studio 2010, которая выполняет административные задачи Exchange 2007, и перенесу ее с 32-разрядного сервера разработки на 64-разрядный производственный сервер. Служба принимает аргументы, а затем вызывает PowerShell для выполнения команд в оснастке Exchange 2007.
Он правильно работает в среде разработки как в отладчике, так и в самой службе Windows после его установки; К сожалению, когда я скопировал проект на новый 64-разрядный сервер Windows 2008 R2 и собрал его, я смог заставить службу работать только в отладчике VS2010. При установке в качестве службы Windows на 64-разрядном сервере служба постоянно завершается сбоем с сообщением от компонента PowerShell кода, которое гласит:
«Никаких оснасток для Windows PowerShell версии 2 не зарегистрировано»
Сбой кода C # в конкретной строке при вызове экземпляра PowerShell:
RunspaceConfiguration rc;
PSSnapInInfo info = rc.AddPSSSnapIn («Microsoft.Exchange.Management.PowerShell.Admin», предупреждение о выходе);
Как я уже говорил, код будет работать, пока я запускаю его в отладчике VS2010.
Чтобы попытаться это исправить, я попытался найти ошибку и нашел множество других людей, у которых была эта проблема, но никто не дал однозначного ответа на нее. Следуя некоторым выводам, оставленным в некоторых из этих публикаций, я попробовал следующие вещи:
- Я удалил и переустановил инструменты управления Exchange 2007
- Я сделал «Get-PSSnapin» из приглашения PowerShell для Exchange Management Shell (и получил список средств администрирования Exchange, который выглядит следующим образом - версия говорит, что она предназначена для PSVersion 1.0, а не 2.0, но, поскольку работая в моем отладчике VS2010, я думал, что psversion не был причиной проблемы):
o Имя: Microsoft.Exchange.Management.PowerShell.Admin.
o PSVersion: 1,0
o Описание: задачи администратора для сервера Exchange
- Я попытался зарегистрировать оснастку с помощью INSTALLUTIL в C: \ Windows \ Microsoft.NET \ Framework64 \ v2.0.50727 как
o Установить с: \ программные файлы \ microsoft \ exchange server \ bin \ microsoft.exchange.management.dll
Но я все еще не могу запустить код в отладчике, пока не смогу заставить его работать как служба.
Судя по содержанию сообщений, которые я читал об этом, это проблема, с которой сталкивалось много людей, но пока никто не смог ее полностью исправить. Кто-нибудь может предложить какую-либо помощь?