Powershell赢得';t使用变量中的参数值

Powershell赢得';t使用变量中的参数值,powershell,powershell-3.0,Powershell,Powershell 3.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 :

以下命令工作正常:

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
该变量是一个字符串

 $SMTPAddresses.GetType()

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

知道是什么原因吗?

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

$SMTPAddresses = "SMTP:am@foo.com","asmo@bar.org,toke@foobar.net” 
这是一个由两个电子邮件地址组成的字符串,用逗号连接:

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

错误消息是不言自明的<代码>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
$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}

使用xxx UnifiedGroups命令的Office 365 powershell上的一个特性

如果要像这样构造命令:

$SMTPAddresses = 'SMTP:am@foo.com','SMTP:asmo@bar.org','SMTP:toke@foobar.net'
Set-Mailbox $mailbox -EmailAddresses $SMTPAddresses
$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”类型