在Powershell for Set-MailPublicFolder

时间:2017-09-25 18:24:46

标签: powershell exchange-server public-folders

在Exchange Online中创建公用文件夹和邮件启用时,默认电子邮件地址为@ domain.onmicrosoft.com

我们的文件夹名称是“NNNNN_Folder name”,其中NNNNN是一个5位数字。

我想将公用文件夹的主电子邮件地址设置为NNNNN@domain.com

我尝试过很多变种:

Get-PublicFolder -Recurse -Identity "\X\Y\Z"|
    Sort-Object Identity –Descending| 
    Select-Object -first 4|
    Set-MailPublicFolder  -PrimarySmtpAddress {$_.name.substring(0,5)+"@domain.com"}

并收到有关解释生成的电子邮件地址的错误:

Cannot process argument transformation on parameter 'PrimarySmtpAddress'. Cannot convert value
"$_.name.substring(0,5)+"@domain.com"" to type "Microsoft.Exchange.Data.SmtpAddress". Error: "The email
address "$_.name.substring(0,5)+"@domain.com"" isn't correct. Please use this format: user name, the @ sign,
followed by the domain name. For example, tonysmith@contoso.com or tony.smith@contoso.com."
    + CategoryInfo          : InvalidData: (:) [Set-MailPublicFolder], ParameterBindin...mationException
    + FullyQualifiedErrorId : ParameterArgumentTransformationError,Set-MailPublicFolder
    + PSComputerName        : outlook.office365.com

我也尝试在同一操作中将PublicFolder的EmailAddress设置为NNNNN@domain.com。

-EmailAddresses @{$_.name.substring(0,5)+"@domain.com"}

它似乎没有评估这个论点,或者我错过了其他的东西?

如果我更改Set-MailPublicFolder ... % {$_.name.substring(0,5) + "@domain.com"}

我确实看到了我期待的电子邮件地址。 谢谢,

克雷格。

1 个答案:

答案 0 :(得分:0)

查看此版本。

从Microsoft命令文档中,需要identity参数(请参阅this

我也不确定它是否可以在不指定foreach的情况下使用数组并处理每个人。

查看此修改版本。

$PublicFolders = Get-PublicFolder -Recurse -Identity "\X\Y\Z"| Sort-Object Identity –Descending | Select-Object -first 4

$PublicFolders | foreach {
                     $NewEmail = "$($_.name.substring(0,5))@domain.com"
                     Write-Host "Settings MailPublicFolder with name $($_.Identity) to $NewEmail" -ForegroundColor Cyan
                     Set-MailPublicFolder -Identity $_.Identity -PrimarySmtpAddress $NewEmail
                  }