0

下面是我正在使用的代码。我无法使用 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:lferrigno@sscincorporated.com,lou.ferrigno@altegrahealth.com");

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

2 回答 2

1

这是我最终使用的代码,因为它是一个集合。

     string[] smtp = { "SMTP:" + textBox6.Text, 9 + "smtp:" + textBox4.Text + "@sscincorporated.com" };
     command2.AddParameter("EmailAddresses", smtp);
于 2013-10-25T23:35:09.500 回答
0

-EmailAddresses参数接受一个数组参数(技术上是SmtpProxyAddress对象的集合,但这并不重要,您可以为其提供一个数组,并且转换将自动处理),但看起来您正在给它一个包含多个地址。您需要提供一个数组参数,其中每个元素都是一个地址,或者试试这个:

command2.AddParameter("EmailAddresses","'SMTP:lferrigno@sscincorporated.com','SMTP:lou.ferrigno@altegrahealth.com'");

即使它仍然是 C# 代码中的字符串,但如果它按原样传递给 PowerShell,PowerShell 会将其解释为数组。

您还应该能够省略SMTP:前缀,因为这是默认设置,如果您不指定前缀,它将自动设置。

于 2013-10-24T00:29:58.957 回答