【问题标题】:Powershell - Add-Adgroupmember objectclass:contact to a distribution group error Cannont find[..]Powershell - Add-Adgroupmember objectclass:联系通讯组错误找不到[..]
【发布时间】:2015-02-16 13:44:01
【问题描述】:

我正在编写一个简单的脚本,该脚本应根据一年中的星期将联系人添加到通讯组。我的错误是我的脚本可以添加 objectclass:User 但是当我尝试使用联系人 GUID 时,脚本给了我这个错误:

Add-ADGroupMember : Cannot find an object with identity: '123dd2345-12f0-542b-c3e6-5774bac431aa' under: 'DC=MY,DC=DOMAIN'.
At line:1 char:25
+ get-adgroup $ADGroup |  Add-ADGroupMember  -members $zvar.ObjectGUID
+                         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (123dd2345-12f0-542b-c3e6-5774bac431aa:ADPrincipal) [Add-ADGroupMember], ADIdentityNotFoundException
    + FullyQualifiedErrorId : SetADGroupMember.ValidateMembersParameter,Microsoft.ActiveDirectory.Management.Commands.AddADGroupMember

我使用的脚本部分是这样的:

$zvar = get-adobject -filter {displayname -eq "Valentine, John (CELL)" } #this is my contact displayname that is put in a variable with necessary properties
get-adgroup "Dist - Support group" | Add-ADGroupMember  -members $zvar.ObjectGUID #this is my Distribution group, whatever the properties I put to my contact object I get the error message above i.e. $zvar.name, $zvar.distinguishedname, etc

如果我用 ObjectClass:user "Valentine,John" 替换值 "Valentine, John (CELL)",该命令将成功且不会出错。

我是否正确使用了该命令? 我可能可以使用 Quest 模块,但我想避免使用第三方。

提前致谢

【问题讨论】:

  • 该错误似乎表明它正在寻找安全主体,这意味着您尝试添加的组是安全组而不是通讯组。
  • 我刚查了一下,groupcategory 的值是“Distribution”
  • 那么使用 Exchange cmdlet 可能会更好。
  • 是的,这也是我发现的。不幸的是,这不是我的选择。我将不得不使用最后的解决方案,即 Quest-module。

标签: powershell active-directory powershell-3.0 active-directory-group


【解决方案1】:

今天也遇到了这个问题:您无法使用 Add-ADGroupMember cmdlet 将 "objectClass=contact" 类的 AD 对象添加到组中。

但是,AD组的成员只是简单地存储在多值属性“member”中,每个*-ADObject和相关命令都支持-Add-Replace-Clear-Replace参数。

因此,这适用于添加单个用户:

Set-ADGroup -Identity "GroupName" -Add @{'member'=$contact.DistinguishedName};

这会删除用户:

Set-ADGroup -Identity "GroupName" -Remove @{'member'=$contact.DistinguishedName};

【讨论】:

  • 它就像一个魅力!感谢您发布答案!
【解决方案2】:

正如@mjolinor 评论,exchange cmdlet 将是解决方案,但我没有使用它所需的东西。所以我将使用 Quest-cmdlet。这样它就可以工作了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多