Я пишу приложение WinForms на C#, которое в конечном итоге перенесет почтовые ящики Exchange 2010 в расположение файла (pstStore) в формате PST. Форма состоит из набора текстовых полей, комбинированных ящиков и переключателей. Команда, которая будет выполнять эту работу, - New-MailboxExportRequest -Mailbox ... -FilePath ... после нажатия кнопки.Pass C# Variables to Powershell Engine
Я получаю доступ к оболочке Exchange Management и с использованием рабочей области для передачи командлета и параметров. В параметрах (-Mailbox и -FilePath) я хочу передать значения текстовых полей и комбинированных полей. Как это сделать на C#?
FYI ... Я использую тот же код для заполнения комбинированного поля со всеми почтовыми ящиками из базы данных обмена. Поэтому код работает для этой цели, поэтому я подумал, что могу использовать его для передачи некоторых переменных с помощью метода 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();
}
Прямо сейчас, похоже, это трюк. У меня были переменные в неправильном объеме. Как только я установил, что параметры были исключены. Еще многое предстоит сделать, чтобы он не был слишком неуклюжим, но, спасибо за ясность. – user2704769