PowerShell:Exchange命令行管理程序:无法执行变量以修改多值变量EmailAddresses

PowerShell:Exchange命令行管理程序:无法执行变量以修改多值变量EmailAddresses,powershell,exchange-server,exchange-management-shell,Powershell,Exchange Server,Exchange Management Shell,使用UPN调用函数时,结果如下: Function Get-GmailAlias ($ID) { $a = (Get-RemoteMailbox $ID | Select-Object DisplayName,PrimarySmtpAddress, @{ Name="EmailAddresses"; Expression={$_.EmailAddresses | Where-Object { $_.PrefixString -ceq "smtp" } | For

使用UPN调用函数时,结果如下:

Function Get-GmailAlias ($ID) {
    $a = (Get-RemoteMailbox $ID |
             Select-Object DisplayName,PrimarySmtpAddress, @{ Name="EmailAddresses"; Expression={$_.EmailAddresses | Where-Object { $_.PrefixString -ceq "smtp" } | ForEach-Object { $_.SmtpAddress }}}).EmailAddresses |
             Where-Object { $_ -like '*gmail*' } 

    $b=@()
    foreach ($mem in $a) {
        $b += "'$mem'"
    }
    $c= $b -join ', '
    return $c
}
我正在尝试调用下面cmdlet中的函数

'kiran.kumar@gmail.com', 'kiran_kumar@gmail.com'
我得到以下输出:

Set-RemoteMailbox kpv@gmail.com -EmailAddresses @{Remove=Get-GmailAlias('kpv@gmail.com')}
我尝试了以下方法:

WARNING: The command completed successfully but no settings of 'XXX/XXX/XXX/XXX/XXX/XXX/Kiran Kumar' have been modified.
上述各项均不起作用,备选方案3也给了我以下错误:

>@{Remove=$(Get-GmailAlias('kpv@gmail.com'))} # Alternative-1
>$c = Get-GmailAlias('kpv@gmail.com')
@{Remove="$c"} # Alternative-2
>$c = "@{Remove = $(Get-GmailAlias('kpv@gmail.com'))}"
Set-RemoteMailbox kpv@gmail.com -EmailAddresses $c # Alternative-3

请帮助我找出我无法在-EmailAddresses中执行变量/函数的原因。

设置RemoteMailboxkpv@gmail.com-EmailAddresses@{Remove=“kiran。kumar@gmail.com基兰_kumar@gmail.com“}
-您是否收到与此相同的错误?@gms0ulman它可以工作;我可以使用循环技术删除我想要的SMTP,但我想知道为什么我无法在cmdlet中执行该变量。如果使用双引号并使用而不是分隔符,会不会有好运<代码>“$mem”->
“$mem”
$c=$b-join',“
->
$c=$b-join',”
。无法访问Exchange server进行测试。
Cannot process argument transformation on parameter 'EmailAddresses'. Cannot convert value "@{Remove = 'kiran.kumar@gmail.com', 'kiran_kumar@gmail.com'}" to type "Microsoft.Exchange.Data.ProxyAddressCollection".