c#.net удаленный powershell для iis

Привет у меня есть следующий бит кода

 //set up exchange server name
        var Exchangesrv = "ex1.iah.ac.uk";


        // Initialize PowerShell engine
        var shell = PowerShell.Create();

        // Add the script to the PowerShell object
        shell.Commands.AddScript("Invoke-Command -Computername hostname.example.com -ScriptBlock{get-alias}");

        // Execute the script
        var results = shell.Invoke();


        Input.DataSource = results;
        Input.DataBind();

Поэтому очень просто я хочу вызвать команду Power shell, и «input» — это объект списка, который я заполняю

Но когда я запускаю его на сервере IIS, он не работает, я думаю, это потому, что приложение IIS не работает с учетной записью, которая является администратором на удаленном сервере, на котором я пытаюсь запустить команду. Может ли кто-нибудь помочь решить эту проблему. Как я могу заставить веб-страницу вызвать эту команду invoke с правильными учетными данными?

Редактировать
Поэтому я решил создать профиль на веб-сервере, что означает, когда учетная запись, которую я использую, открывает power-shell, загружается модуль exchange. Но я не вижу этой загрузки при использовании следующего кода

using (var powershell = PowerShell.Create())
        {
            //powershell.Runspace = runspace;


            // Add the script to the PowerShell object
            //powershell.AddScript("Get-alias");
            powershell.AddScript("Get-DynamicDistributionGroup");


            // Execute the script
            var results = powershell.Invoke();


            Input.DataSource = results;
            Input.DataBind();

Так что то, что должно быть происходит, это power shell работает локально на веб-сервере, но мне нужно, чтобы загрузить профиль, однако я не вижу, почему он не делает этого. Есть ли команда, чтобы заставить его загрузить moduel.

2 ответа

  1. В конце концов, олицетворение и вызов не сделали трюк (я мог бы использовать invoke, но я не хотел учетные данные в коде)

    Я обнаружил, что мне пришлось изменить свойства в пуле приложений, а затем он работал нормально.

  2. Свойство пула приложений — «загрузить профиль пользователя». Это должно быть установлено в True.

    Я не могу сказать никому, почему это, но это решило мою проблему отказа в доступе.

    Подробнее о недвижимости здесь: https://blogs.msdn.microsoft.com/vijaysk/2009/03/08/iis-7-tip-3-you-can-now-load-the-user-profile-of-the-application-pool-identity/