У меня следующая конфигурация:
Windows Server 2012 R2.
ИИС-8.
Веб-приложение ASP.NET MVC-5, размещенное в IIS-8.
Теперь в моем веб-приложении asp.net MVC есть метод, который выполняет некоторые команды PowerShell и PowerCli, вот пример скриптов:
var shell = PowerShell.Create();
var shell2 = PowerShell.Create();
var shell3 = PowerShell.Create();
string PsCmd = "add-pssnapin VMware.VimAutomation.Core; $vCenterServer = '" + vCenterName +
"';$vCenterAdmin = '" + vCenterUsername + "' ;$vCenterPassword = '" + vCenterPassword +
"';" + System.Environment.NewLine;
PsCmd = PsCmd + "$VIServer = Connect-VIServer -Server $vCenterServer -User $vCenterAdmin `
-Password $vCenterPassword;" + System.Environment.NewLine;
PsCmd = PsCmd + "Get-VMHost " + System.Environment.NewLine;
// PowerCLI script to the the hypervisor network info
string PsCmd2 = "add-pssnapin VMware.VimAutomation.Core; $vCenterServer = '" + vCenterName +
"';$vCenterAdmin = '" + vCenterUsername + "' ;$vCenterPassword = '" + vCenterPassword +
"';" + System.Environment.NewLine;
PsCmd2 = PsCmd2 + "$VIServer = Connect-VIServer -Server $vCenterServer -User $vCenterAdmin `
-Password $vCenterPassword;" + System.Environment.NewLine;
PsCmd2 = PsCmd2 + " Get-VMHost " + vCenterName + "| Get-VMHostNetworkAdapter -VMKernel" +
System.Environment.NewLine;
shell.Commands.AddScript(PsCmd);
shell2.Commands.AddScript(PsCmd2);
dynamic results = shell.Invoke(); // execute the first PowerCLI script
dynamic results2 = shell2.Invoke(); // execute the second PowerCLI script
// the PowerCLI executed successfully
if (results != null && results.Count > 0 && results[0].BaseObject != null)
проблема, с которой я сталкиваюсь, заключается в следующем:
когда я развернул код asp.net MVC, который содержит описанный выше метод, на IIS-7 + Windows Server 2008 R2, все работало хорошо, и сценарии возвращали результаты.
но теперь на нашем рабочем сервере у нас есть IIS-8 + Windows Server 2012 r2, и описанный выше метод не работает, сценарии powershell возвращают null...
Вот настройки, которые у меня есть на IIS-8:
Я определил пользователя Domitian для DefaultAppPool и добавил этого пользователя домена в локальную группу администраторов на хост-сервере.
Я также включаю анонимную аутентификацию для веб-приложения и определяю его для запуска как «Идентификатор пула приложений».
Так может ли кто-нибудь посоветовать, почему IIS-8 не позволяет размещенному веб-приложению asp.net запускать сценарии powershell?