Как добавить несколько адресов электронной почты?

Ниже приведен код, который я использую. Я не могу добавить несколько адресов, используя параметр Powershell Emailaddresses. Код работает нормально, если я просто ввожу один адрес электронной почты, но как только я добавляю два адреса в приведенный ниже код, он возвращает исключение с указанием недопустимого адреса smtp.

PSCredential credential = new PSCredential(username, password);
WSManConnectionInfo connectionInfo = new WSManConnectionInfo((new Uri(liveIdconnectionUri)), "http://schemas.microsoft.com/powershell/Microsoft.Exchange", credential);
connectionInfo.AuthenticationMechanism = AuthenticationMechanism.Default;

Runspace runspace = System.Management.Automation.Runspaces.RunspaceFactory.CreateRunspace(connectionInfo);
PowerShell powershell = PowerShell.Create();
runspace.Open();
powershell.Runspace = runspace;

var secure = new SecureString();
foreach (char c in textBox5.Text)
{
    secure.AppendChar(c);
}

PSCommand command2 = new PSCommand();
command2.AddCommand("Set-Mailbox");
command2.AddParameter("Identity", "lferrigno");
command2.AddParameter("EmailAddressPolicyEnabled", 0);
command2.AddParameter("EmailAddresses", "SMTP:[email protected],[email protected]");

powershell.Commands = command2;
powershell.Invoke();

person Murda Ralph    schedule 23.10.2013    source источник
comment
Мне удалось успешно запустить этот код при самостоятельном вводе каждого адреса электронной почты.   -  person Murda Ralph    schedule 24.10.2013
comment
Хотя в параметре указано, что я могу вставить несколько значений - параметр value1, value2 и т. д., похоже, что он видит его как один целый адрес, что делает его недействительным.   -  person Murda Ralph    schedule 24.10.2013


Ответы (2)


Это код, который я использовал, так как это была коллекция.

     string[] smtp = { "SMTP:" + textBox6.Text, 9 + "smtp:" + textBox4.Text + "@sscincorporated.com" };
     command2.AddParameter("EmailAddresses", smtp);
person Murda Ralph    schedule 25.10.2013

Параметр -EmailAddresses принимает в качестве аргумента массив (технически это набор объектов SmtpProxyAddress, но это не важно, вы можете предоставить ему массив, и преобразование будет выполняться автоматически), но похоже, что вы давая ему одну строку, содержащую несколько адресов. Вам нужно либо указать аргумент массива, где каждый элемент является адресом, либо попробовать следующее:

command2.AddParameter("EmailAddresses","'SMTP:[email protected]','SMTP:[email protected]'");

Несмотря на то, что это по-прежнему строка в вашем коде C#, если она передается в PowerShell как есть, PowerShell интерпретирует ее как массив.

Вы также должны иметь возможность опускать префиксы SMTP:, потому что они используются по умолчанию и будут установлены автоматически, если вы не укажете префикс.

person Adi Inbar    schedule 24.10.2013
comment
я попробовал ваш код. Кто-то ранее предлагал тот же код, но он не работал, поэтому они удалили свой ответ. Мне пришлось пойти с массивом - person Murda Ralph; 26.10.2013
comment
Это было моей главной мыслью, что вам нужно передать массив. Код, который я разместил, был просто альтернативным предложением о том, как можно передать массив в PowerShell в виде строки, потому что если вы предоставляете разделенный запятыми список строк в кавычках в командной строке PowerShell, он интерпретируется как аргумент массива. Ключевым словом было если, оно передается в PowerShell как есть. - person Adi Inbar; 26.10.2013