1

我正在用 C# 编写一个 WinForms 应用程序,它最终会将 Exchange 2010 邮箱迁移到 .pst 格式的文件位置 (pstStore)。该表单由一组文本框、组合框和单选按钮组成。完成这项工作的命令是 New-MailboxExportRequest –Mailbox... -FilePath... 在单击按钮后。

我正在访问 Exchange 命令行管理程序并使用运行空间来传递 cmdlet 和参数。在参数(-Mailbox 和 –FilePath)中,我想传递文本框和组合框的值。我如何在 C# 中做到这一点?

仅供参考……我正在使用相同的代码来填充一个组合框,其中包含来自 Exchange 数据库的所有邮箱。所以代码就是为了这个目的而工作的,所以我想我也可以用它来通过 AddParameter 方法传递一些变量。

这是点击事件的代码:

 InitialSessionState iss = InitialSessionState.CreateDefault();
    PSSnapInException warning;          iss.ImportPSSnapIn("Microsoft.Exchange.Management.PowerShell.E2010",out warning);
    using (Runspace myrunspace = RunspaceFactory.CreateRunspace(iss))
    {
       myrunspace.Open();                                
       using (PowerShell powershell = PowerShell.Create())                    
        {              powershell.AddCommand("Microsoft.Exchange.Management.PowerShell.E2010\\New-MailboxExportRequest")
    powershell.AddParameter("Mailbox", "UserMailbox");
    powershell.AddParameter("FilePath", "ExchAdmin");
    powershell.AddParameter("","");
    powershell.Runspace = myrunspace;
    Collection<PSObject> results = null;
    try
    {
       results = powershell.Invoke(); //Runs the cmdlet synchronously  
    }
    catch (RuntimeException ex)
     {
        foreach (PSObject thisResult in results)
        {
           lstBoxStatus.Items.Add(thisResult); //sending the result to a status window
        }
     }                
     myrunspace.Close();
    }
4

1 回答 1

1

当您调用带有两个参数的 AddParameter 重载时,第二个是值。只需在那里使用 C# 变量的名称,例如:

string mailbox = _mailBoxTextBox.Text;
...
powershell.AddParameter("Mailbox", mailbox);
于 2013-08-22T18:03:38.587 回答