通讯组所有者管理 Exchange PowerShell

通讯组所有者管理 Exchange PowerShell

在 Exchange 2010(版本 14.3 Build 123.4)环境中,如何通过 PowerShell 将新用户添加到“ManagedBy”属性并同时删除另一个用户?(我将使用 foreach 对多个列表执行此操作)

在这篇 TechNet 博客文章中,http://blogs.technet.com/b/dstrome/archive/2011/05/29/multivalued-properties-in-exchange-2010.aspx 数组语法,(我尝试过在 Remove 之前添加,结果相同):

Set-DistributionGroup Sales -ManagedBy @{Remove="David"; Add="Gerald"}

导致消息:

All groups must have at least one owner who manages membership, message approval, and other settings for the group.

在 Exchange 2010 通讯组中添加和删除管理员的正确方法是什么?

答案1

如果最终结果是用“Gerald”替换“David”作为所有者,则完全避免使用添加/替换语法:

Set-DistributionGroup Sales -ManagedBy "Gerald"

如果你必须以原子方式执行这两个操作(如果你有以下情况可能如果你不想替换现有的值),则将其拆分为两个不同的操作:

Set-DistributionGroup Sales -ManagedBy @{Add="Gerald"}
Set-DistributionGroup Sales -ManagedBy @{Remove="David"}

答案2

ManagedBy 是一个 MultiValuedProperty 参数。

要添加,请使用加号 (+) 运算,见下面的示例。要减,请使用减号等于 (-=) 运算,见下面的第二个示例。

添加用户的示例:

$mgr = get-user gerald

foreach ($thing in $things) {
    $group = Get-DistributionGroup $thing
    $managers = $group.ManagedBy
    $newmanagers = $managers+$mgr
    Set-DistributionGroup -BypassSecurityGroupManagerCheck -ManagedBy $newmanagers -Identity $thing
}

并且,要删除用户(使用 DistinguishedName):

$removethis = "CN=David,OU=Houston,DC=company,DC=com"

在迭代 $managers 列表时(参见上文):

foreach ($manager in $managers) {
    $dn = $manager.DistinguishedName
    if ($dn -eq $removethis) {
        $modifiedmanagers = ($managers -= $removethis)
    }
}

然后在 cmdlet 中使用它:

    Set-DistributionGroup -BypassSecurityGroupManagerCheck -ManagedBy $modifiedmanagers -Identity $thing

相关内容