Powershell不会使用变量中的参数值

时间:2014-01-16 11:52:45

标签: powershell powershell-v3.0

以下命令完美运行:

Set-Mailbox $mailbox -EmailAddresses SMTP:am@foo.com,asmo@bar.org,toke@foobar.net

尝试使用变量崩溃中的电子邮件地址运行相同的命令。

$SMTPAddresses = "SMTP:am@foo.com,asmo@bar.org,toke@foobar.net” 
Set-Mailbox $mailbox -EmailAddresses $SMTPAddress

错误:

Set-Mailbox : Cannot convert 'SMTP:am@foo.com,asmo@bar.org,toke@foobar.net' to the type 'Microsoft.Exchange.Data.ProxyAddressCollection' required by parameter 'EmailAddresses'. The address 'SMTP:am@foo.com,asmo@bar.org,toke@foobar.net' is invalid: The address 'am@klestrup.dk,asmo@bdk.dk,toke@bdk.dk' is not a valid SMTP address.
At line:1 char:39
+  Set-Mailbox $mailbox -EmailAddresses $SMTPAddresses
+                                       ~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [Set-Mailbox], ParameterBindingException
    + FullyQualifiedErrorId : CannotConvertArgument,Microsoft.Exchange.Management.RecipientTasks.SetMailbox

变量是字符串btw。

 $SMTPAddresses.GetType()

IsPublic IsSerial Name                                     BaseType                                                                                                                            
-------- -------- ----                                     --------                                                                                                                            
True     True     String                                   System.Object 

任何想法导致了什么?

3 个答案:

答案 0 :(得分:1)

这是一个包含两个电子邮件地址字符串的数组:

$SMTPAddresses = "SMTP:am@foo.com","asmo@bar.org,toke@foobar.net” 

这是一个由逗号组成的两个电子邮件地址的字符串:

$SMTPAddresses = "SMTP:am@foo.com,asmo@bar.org,toke@foobar.net” 

答案 1 :(得分:1)

错误消息相当不言自明。 am@foo.com,asmo@bar.org,toke@foobar.net不是电子邮件地址。试试这样:

$SMTPAddresses = 'SMTP:am@foo.com','SMTP:asmo@bar.org','SMTP:toke@foobar.net'
Set-Mailbox $mailbox -EmailAddresses $SMTPAddresses

答案 2 :(得分:0)

使用xxx-UnifiedGroups命令在Office 365 Powershell上的特殊性

如果要像这样构造命令:

$emails  = @()
$emails += "SMTP:primary.address@domain.com"
$emails += "smtp:email2@domain.com"

# I'm splatting here but you can use whatever approach you prefer
$params  = @{}
$params += @{"EmailAddresses" = $emails}

您收到此错误,请尝试确保包含租户地址,如下所示:

$emails  = @()
$emails += "SMTP:primary.address@domain.com"
$emails += "smtp:email2@domain.com"
$emails += "smtp:email@YourTenant.onmicrosoft.com"

$params  = @{}
$params += @{"EmailAddresses" = $emails}

注意:最初,我使用转义功能克服了该错误,但这是一条红色鲱鱼。在获得完整的端到端工作示例后,事实证明您需要一个“ MOERA”地址(一个与您的365个租户匹配的地址),但是该命令给出了有关无法转换为'Microsoft.Exchange.Data类型的错误消息。 ProxyAddressCollection”。