Member 12586674 Ответов: 1

Подключитесь к poweshell с помощью ASP.NET с#


Я пытаюсь подключиться, чтобы подключиться к власти-оболочки с помощью .Нетто На C#. Мне нужно получить подробную информацию о почтовом ящике, создать новый почтовый ящик и удалить существующий почтовый ящик.
Я использую "получить почтовый ящик","новый почтовый ящик" &ампер; "удалить почтовый ящик".

Но когда я вызываю команду, она бросает меня ниже ошибки.

Термин "Get-Mailbox" не распознается как имя командлета, функции, файла сценария или действующей программы. Проверьте правильность написания имени или, если путь был включен, убедитесь, что путь правильный, и повторите попытку.

Я подключаюсь к силовой оболочке удаленно.

Что я уже пробовал:

Runspace runspace = null;
string shellUri = "http://schemas.microsoft.com/powershell/Microsoft.PowerShell";
PSCredential remoteCredential = new PSCredential(@"userid", StringToSecureString("password"));

WSManConnectionInfo connectionInfo = new WSManConnectionInfo(false, "ip address",5985, "/wsman", shellUri, remoteCredential, 1 * 60 * 1000);
connectionInfo.OperationTimeout = 4 * 60 * 1000;
runspace = RunspaceFactory.CreateRunspace(connectionInfo);
connectionInfo.AuthenticationMechanism = AuthenticationMechanism.Basic;
runspace.Open();
    using (PowerShell ps = PowerShell.Create())
    {
       ps.Runspace = runspace;
       ps.Commands.AddCommand("Get-Mailbox");
       ps.Commands.AddParameter("Identity", "user@domain.com");
 
      var result = ps.Invoke();
      foreach (PSObject res in result)
      {
        Console.WriteLine("{0,-25}1}",res.Members["DisplayName"].Value,res.Members["PrimarySMTPAddress"].Value);
       }
      }
            runspace.Close();
            runspace.Dispose();

А это

string shellUri = "http://schemas.microsoft.com/powershellMicrosoft.PowerShell";
PSCredential remoteCredential = new PSCredential(@"userid", StringToSecureString("password"));

WSManConnectionInfo connectionInfo = new WSManConnectionInfo(false, "ip address", 5985, "/wsman", shellUri, remoteCredential, 1 * 60 * 1000);
connectionInfo.OperationTimeout = 4 * 60 * 1000;
Runspace runspace = RunspaceFactory.CreateRunspace(connectionInfo);
connectionInfo.AuthenticationMechanism = AuthenticationMechanism.Basic;
runspace.Open();

            //Get Mail Box
            Pipeline pipelineGetMailBox = runspace.CreatePipeline();

            Command getMailBox = new Command("Get-Mailbox");
            getMailBox.Parameters.Add("OrganizationalUnit", "OU Name");
            getMailBox.Parameters.Add("Identity", "user@domain.com");

            pipelineGetMailBox.Commands.Add(getMailBox);

            Collection<PSObject> mailboxGetResult = pipelineGetMailBox.Invoke();

            pipelineGetMailBox.Dispose();

            runspace.Close();
            runspace.Dispose();

1 Ответов

Рейтинг:
0

Wessel Beulink

Где вы удаляете существующие почтовые ящики?
Также проверьте, работает ли команда, которую вы сейчас пытаетесь запустить, вручную в powershell.

Вы также должны стрелять как "точечный" сценарий. Это было бы:

. .\Get-Mailbox.{extension}


Вы также должны использовать set-ExecutionPolicy Unrestricted или set-ExecutionPolicy AllSigned
Проверка: Выполнение поручений политики

Сначала убедитесь, что вы можете запустить его вручную в PowerShell. Чем копировать скрипт в свой код с теми же параметрами и т. д.


Member 12586674

Привет,
Я могу запустить команду вручную в Exchange PowerShell. Но получаю ту же ошибку при попытке из моего приложения.

Wessel Beulink

Какую команду вы запускаете вручную, можете ли вы ее опубликовать?

Member 12586674

Получать-почтовый ящик -тож email@domain.com

Wessel Beulink

Извините за мою запоздалую реакцию. Если вы используете Exchange Server 2016, то Get-Mailbox не является командлетом, как показано в вашем предупреждении. См. эту статью: bb123685

Member 12586674

Привет, Вессел.
Я использую exchange 2010.
Я нашел одну ссылку, но даже это решение, похоже, не вписывается
http://stackoverflow.com/questions/10408103/c-sharp-and-powershell-on-exchange-2010-the-term-group-object-is-not-recogni