Я пытаюсь запустить сценарий powershell с сайта ASP.NET, размещенного на IIS 7.5 в Windows 2008R2.Вызов powershell из IIS завершился неудачно при второй попытке
На сайте есть два поля для имени пользователя и пароля и кнопки.
При нажатии кнопки выполняется следующий код и вывод, записанный на сайт.
Все работает отлично с первым пользователем, который зашел на сайт.
Первый пользователь может запускать командлет бесконечно много раз.
Но когда я вхожу на сайт с другим пользователем (аутентификация Kerberos), второй пользователь (и все остальные пользователи) не может запустить сценарий.
Ошибка RunspaceFactory.CreateRunspace() с исключением.
Зачем? Хороший вопрос, сообщение и внутреннее исключение пустое.
Журнал событий также пуст.
После команды iisreset, опять же, первый пользователь может запустить скрипт и все остальные.
Кроме того, я создал приложение WinForms, которое делает то же самое, с полями имени пользователя и пароля, и все работает отлично!
Так что я предполагаю, что проблема связана с подключением IIS к powershell.
Следующий код выполняется при каждом нажатии кнопки:
(Может содержать незначительные синтаксические ошибки, написанные в блокноте (не могу копировать прошлое))
string serverNameFQDN = "myserver.mydomain.com";
char[] cArray = passwordClearText.ToCharArray();
SecureString secString = new SecureString();
foreach(char c in cArray)
{
secString.AppendChar(c);
}
PSCredential psCred = new PSCredential(Username, secString);
WSManConnectionInfo connectionInfo =
new WSManConnectionInfo(new Uri(String.Format("http://{0}:5985/wsman", serverNameFQDN)),
"http://schemas.microsoft.com/powershell/Microsoft.Powershell", psCred)
{
AuthenticationMechanism = AuthenticationMechanism.Kerberos,
OpenTimeout = 10000,
OperationTimeout = 30*60*1000;
};
using (Runspace remoteRunspace = RunspaceFactory.CreateRunspace(connectionInfo))
{
var pipe = remoteRunspace.CreatePipeline();
remoteRunspace.Open();
pipe.Commands.AddScript("some-cmdlet");
var res = pipe.Invoke();
// Get the output, irrelevent.
pipe.Stop();
pipe.Dispose();
remoteRunSpace.Close();
}
appriciate бы любую помощь!
Спасибо в продвинутом состоянии.
Почему он говорит, что аутентификация - ... вместо =? – Eris
Typo .. Написано на блокноте. Сожалею. –