Exchange и C#

Язык C#
  1. 5 месяцев(а)

    Добрый день.

    Хочу написать программу на C# которая бы искала письма на почтовом сервере.
    Например, командлет Powershell выглядит так: Get-MessageTrackingLog -Server myserver -Start '08/10/2016 15:40:00' -End '25/01/2018 00:00:00' -Recipients 'user@domain'
    На C# код следующий:

    string connectionUri = "http://myserver/PowerShell/";

    string loginPassword = textBox2.Text; // пароль
    SecureString secpassword = new SecureString();
    foreach (char c in loginPassword)
    {
    secpassword.AppendChar(c);
    }
    PSCredential credential = new PSCredential(textBox1.Text, secpassword); // логин и пароль

    Runspace runspace = System.Management.Automation.Runspaces.RunspaceFactory.CreateRunspace();
    PowerShell powershell = PowerShell.Create();
    PSCommand command = new PSCommand();
    command.AddCommand("New-PSSession")
    .AddParameter("ConfigurationName", "Microsoft.Exchange")
    .AddParameter("ConnectionUri", new Uri(connectionUri))
    .AddParameter("Authentication", "Kerberos")
    .AddParameter("Credential", credential);

    powershell.Commands = command;
    runspace.Open();
    powershell.Runspace = runspace;
    Collection<System.Management.Automation.PSObject> result = powershell.Invoke();

    powershell = PowerShell.Create();
    command = new PSCommand();

    command.AddCommand("Invoke-Command");
    command.AddParameter("ScriptBlock", System.Management.Automation.ScriptBlock.Create("Get-MessageTrackingLog -Start '01/25/2018 00:00:00' -End '01/25/2018 01:00:00' -Recipients 'user@domain'"));
    // command.AddParameter("ScriptBlock", System.Management.Automation.ScriptBlock.Create("Get-Mailbox"));
    command.AddParameter("Session", result[0]);
    powershell.Commands = command;
    powershell.Runspace = runspace;
    var mailBoxes = powershell.Invoke();
    runspace.Close();

    StringBuilder stringBuilder = new StringBuilder(); // конвертация результата в одну строку с использованием StringBuilder;
    foreach (PSObject obj in mailBoxes)
    {
    stringBuilder.AppendLine(obj.ToString());

    }
    textBox3.Text = stringBuilder.ToString();

    Программа соединяется с сервером и ищет письма пользователя user@domain за указанное время (3 письма за этот период), но выводит в виде:
    Microsoft.Exchange.Management.TransportLogSearchTasks.MessageTrackingEvent
    Microsoft.Exchange.Management.TransportLogSearchTasks.MessageTrackingEvent
    Microsoft.Exchange.Management.TransportLogSearchTasks.MessageTrackingEvent

    Можете подсказать как правильно вывести результат?

или зарегистрируйтесь чтобы ответить