使用对象的修改 属性 作为 Set-MailPublicFolder 的 Powershell 中的参数

Use modified property of object as parameter in Powershell for Set-MailPublicFolder

当我们在 Exchange Online 中创建 public 文件夹并启用邮件时,默认电子邮件地址是 @domain.onmicrosoft.com

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

我想将 public 文件夹的主电子邮件地址设置为 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 的电子邮件地址设置为 NNNNN@domain.com。

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

它似乎没有评估论点或者我遗漏了其他东西?

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

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

克雷格

查看此版本。

根据 Microsoft 命令文档,身份参数是必需的(参见 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
                  }