Я разработал веб-приложение ASP.NET MVC для выполнения сценариев PowerShell.
Я использую веб-сервер VS и могу нормально выполнять сценарии.
Однако требуется, чтобы пользователи могли выполнять сценарии для AD, чтобы выполнять действия, которые не разрешены их учетным записям.
Поэтому я использую олицетворение для переключения удостоверения перед созданием пространства выполнения PowerShell:
Runspace runspace = RunspaceFactory.CreateRunspace(config);
var currentuser = WindowsIdentity.GetCurrent().Name;
if (runspace.RunspaceStateInfo.State == RunspaceState.BeforeOpen) {
runspace.Open();
}
Я проверил, используя учетную запись администратора домена, и я получаю следующее исключение при вызове runspace.Open ():
Исключение безопасности
Описание: приложение попыталось выполнить операцию, не разрешенную политикой безопасности. Чтобы предоставить этому приложению необходимые разрешения, обратитесь к системному администратору или измените уровень доверия приложения в файле конфигурации.
Сведения об исключении: System.Security.SecurityException: Запрошенный доступ к реестру не разрешен.
Веб-приложение работает с полным доверием, и я явно добавил учетную запись, которую я использую для олицетворения, в группу локальных администраторов машины (хотя группа администраторов домена уже была там).
Я использую вызов logonUser advapi32.dll, чтобы выполнить олицетворение аналогично этому сообщению (http://blogs.msdn.com/webdav_101/archive/2008/09/25/howto-calling-exchange-powershell-from-an-impersonated-thead.aspx)
Любая помощь приветствуется, так как на данный момент это немного мешает шоу.
Спасибо
Ben