我在C#中编写一个WinForms应用程序,它最终将Exchange 2010邮箱迁移到.pst格式的文件位置(pstStore)。表单由一组文本框,组合框和单选按钮组成。单击按钮后,将执行此工作的命令为New-MailboxExportRequest -Mailbox ... -FilePath ....
我正在访问Exchange Management shell并使用运行空间传递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();
}
答案 0 :(得分:1)
当您调用带有两个参数的AddParameter重载时,第二个是值。只需使用C#变量的名称,例如:
string mailbox = _mailBoxTextBox.Text;
...
powershell.AddParameter("Mailbox", mailbox);