Запуск командлета Powershell в приложении C# в IIS в разных доменах - PullRequest
0 голосов
/ 05 мая 2020

У нас есть домены: NT1 и NT2.

У нас есть приложение C#, которое вызывает командлеты Powershell на сервере Exchange (домен NT2). Он использует учетные данные NT2 \ User .

Отрывок:

using System.Management.Automation;
using System.Management.Automation.Runspaces;
...
var connectionInfo = nw WSManConnectionInfo(
    exchangeUri,
    "http://schemas.microsoft.com/powershell/Microsoft.Exchange",
    new PSCredential(nt2User, password));
connectionInfo.SkipRevocationCheck = true;
connectionInfo.SkipCACheck = true;
connectionInfo.SkipCNCheck = true;

using var runspace = RunspaceFactory.CreateRunspace(connectionInfo);
runspace.Open();
using var pipeline = runspace.CreatePipeline();
pipeline.Commands.AddScript("Set-User -Identity Contoso\Jill -DisplayName Jill");
pipeline.Invoke();

Все нормально, когда я просто запускаю это приложение на своем компьютере (домен NT1).

Он перестает работать, когда приложение развернуто на сервере в домене NT1 и размещено в IIS. Пул приложений IIS настроен с идентификатором домена NT1 ( NT1 \ User ).

Он выдает исключение System.Management.Automation.Remoting.PSRemotingTransportException в System.Managemnt.Automation.RemoteRunspace.Open ( ):

Connecting to remote server mail.test.brightfulsolutions.com failed with the following error message: Access is denied. For more information, see the about_Remote_Troubleshooting Help topic.

Похоже, что пользователь NT1 \ User, удостоверяющий личность пула приложений IIS, и предполагаемый пользователь Powershell NT2 \ User конфликтуют, но не уверены, что с этим делать.

Любые предложения (код, конфигурация сервера) приветствуются.

...