在 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