【问题标题】:Bulk Add SmtpAddress to users Exchange 2010将 SmtpAddress 批量添加到用户 Exchange 2010
【发布时间】:2023-03-25 12:29:02
【问题描述】:

我们最近刚刚在我们的接受域和电子邮件地址政策中添加了一个域。虽然我们的许多用户都遵循该政策,但我们有第三个域,一些用户将其作为主要地址,但不遵循地址政策。我需要获取这些用户并以firstname.lastname@domain2.com 的格式添加一个 SMTP 地址。

例如,john.doe@domain3.com(主要)将 john.doe@domain1.com 作为别名,并且需要将 john.doe@domain2.com 添加为 SMTP 地址。

我有以下代码,但收到错误:

$Users = Get-Mailbox -ResultSize Unlimited | Where-Object {($_.PrimarySMTPAddress -like "*domain3.com*)}
foreach ($a in $Users) {
    $b = Get-User $a.Primary.SMTPAddress
    $a.EmailAddresses.Add("$($b.Firstname + "." + $b.Lastname)@domain2.com")
}
$Users |%{Set-Mailbox $_.PrimarySMTPAddress -EmailAddresses $_.EmailAddresses

错误如下:

Cannot process argument transformation on parameter 'Identity'. Cannot convert the "john.doe@domain3.com" value of type "Microsoft.Exchange.Data.SmtpAddress" to type "Microsoft.Exchange.Configuration.Tasks.UserIdParameter". + CategoryInfo : InvalidData: (:) [Get-User], ParameterBindin...mationException + FullyQualifiedErrorId : ParameterArgumentTransformationError,Get-User

Exception calling "Add" with "1" argument(s): "The address '.@domain2.com' is invalid: ".@domain2.com" isn't a valid SMTP address. The domain name can't contain spaces and it has to have a prefix and a suffix, such as example.com." At C:\_scripts\SmtpAdd.ps1:4 char:23 + $a.emailaddresses.Add <<<< ("$($b.Firstname + "." + $b.LastName)@domain2.com") + CategoryInfo : NotSpecified: (:) [], MethodInvocationException + FullyQualifiedErrorId : DotNetMethodException

Cannot process argument transformation on parameter 'Identity'. Cannot convert the "john.due@domain3.com" value of type "Microsoft.Exchange.Data.SmtpAddress" to type "Microsoft.Exchange.Configuration.Tasks.MailboxIdParameter". + CategoryInfo : InvalidData: (:) [Set-Mailbox], ParameterBindin...mationException + FullyQualifiedErrorId : ParameterArgumentTransformationError,Set-Mailbox

谢谢

【问题讨论】:

    标签: email powershell exchange-server-2010


    【解决方案1】:

    我认为问题从这一行开始:

    $b = Get-User $a.Primary.SMTPAddress

    Get-User 无法返回有效用户,因为$a.Primary.SMTPAddress 没有返回Get-User 可以使用的类型。然后导致EmailAddresses.Add 失败,因为$b 为空。 Set-Mailbox 失败的原因与 Get-User 相同

    试试这个(您还需要在Set-Mailbox 行上执行此操作):

    $b = Get-User $a.Primary.SMTPAddress.ToString()

    【讨论】:

    • 这在使用 `$Users = Get-Mailbox "User Name" 指定单个用户时有效。我仍然收到上面列出的“异常调用“添加”错误,在 OP 中使用相同的代码。
    • 你能在EmailAddresses.Add之前检查$b的内容吗?
    • 该问题似乎源于我们的 Exchange 环境的另一个问题。此后,该问题已得到修复,并且脚本运行了。再次感谢@Tav。
    猜你喜欢
    • 1970-01-01
    • 2022-08-02
    • 2019-02-05
    • 1970-01-01
    • 2015-02-11
    • 1970-01-01
    • 2019-01-17
    • 1970-01-01
    • 2011-03-28
    相关资源
    最近更新 更多