AD 域加组命令:Add-ADGroupMember

1. 使用 Add-ADGroupMember 将用户添加到组

Add-ADGroupMember -Identity ITGroup -Members hexiaoxi,hexiaohan,hexingxin
g,hexiaoyi

以上命令,将指定的用户:hexiaoxi,hexiaohan,hexingxing,hexiaoyi 添加到组:ITGroup;

2. 将指定组织单位(OU)下的所有用户添加到组

命令:get-aduser add-adgroupmember

执行:将 ou=创意中心,ou=用户组,ou=集团,dc=hxx,dc=tt 下的全部用户添加到 CreativeCenter 组

get-aduser -filter * -searchbase "ou=创意中心,ou=用户组,ou=集团,dc=hxx,dc=tt" | foreach{add-adgroupmember -identity CreativeCenter -members $_.SamAccountName}

以上命令需要注意 -members $_.SamAccountName 中的名称调用需要使用 SamAccountName 属性,如果直接使用 $_.Name 属性将在执行过程中提示如下错误:

get-aduser -filter * -searchbase "ou=创意中心,ou=用户组,ou=集团,dc=hxx,dc=tt" | foreach{add-adgroupmember -identity CreativeCenter -members $_.name}
add-adgroupmember : 无法在 “DC=hxx,DC=tt” 下找到标识为 “何依轩” 的对象。
所在位置 行:1 字符: 80
+ ... * | foreach{add-adgroupmember -identity CreativeCenter -members $_.na ...
+                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (何依轩:ADPrincipal) [Add-ADGroupMember], ADIden
ti    tyNotFoundException
    + FullyQualifiedErrorId : SetADGroupMember.ValidateMembersParameter,Microsoft.ActiveDirec
   tory.Management.Commands.AddADGroupMember

add-adgroupmember : 无法在 “DC=hxx,DC=tt” 下找到标识为 “何小瑶” 的对象。
所在位置 行:1 字符: 80
+ ... * | foreach{add-adgroupmember -identity CreativeCenter -members $_.na ...
+                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (何小瑶:ADPrincipal) [Add-ADGroupMember], ADIden
ti    tyNotFoundException
    + FullyQualifiedErrorId : SetADGroupMember.ValidateMembersParameter,Microsoft.ActiveDirec
   tory.Management.Commands.AddADGroupMember

根据以上错误,可以判断 get-aduser 命令已经执行正常,获取到 “何依轩” 和 “何小瑶” 两个用户,但是在执行 add-adgroupmember 命令时却提示找不到这两个对象。

在此情况下我们可以想到 get-aduser 已经成功获取并传递给 add-adgroupmember 命令两个对象:“何依轩” 和 “何小瑶”,但 add-adgroupmember 通过 name 属性在 “DC=hxx,DC=tt” 容器中来搜索不到这两个对象,所以我们可以意识到通过 name 属性来获取用户是有问题的。

目前通过本文章的上下文可以了解到 get-aduser 命令已经获取到 name 属性的 “何依轩” 和 “何小瑶” 并传递给 add-adgroupmember,add-adgroupmember 也识别到了 “何依轩” 和 “何小瑶”,无奈 add-adgroupmember 太傻无法通过 name 属性找到这两个对象,所以为了确保全局通用我们使用【Sam 账户名称】方式来调用,即通过命令 -members $_.SamAccountName 获取 SamAccountName 的属性:“heyixuan” 和 “hexiaoyao”,如此就如文章开始的执行结果显示,正常完成操作。

以上错误仅在使用中文做为 name 值时才会发生,所以在使用中文命令名称时获取用户应全局使用 SamAccountName 属性的值,避免以上类似错误。

点击了解 Active Directory 对象属性名称解析:https://hexingxing.cn/active-directory-object-attribute-name-resolution/

通过测试单独执行命令 get-aduser 获取指定组织单位下的用户信息,结果返回正常;

get-aduser -filter * -SearchBase "ou=创意中心,ou=用户组,ou=集团,dc=hxx,dc=tt"


DistinguishedName : CN=何依轩,OU=创意中心,OU=用户组,OU=集团,DC=hxx,DC=tt
Enabled           : True
GivenName         : 何依轩
Name              : 何依轩
ObjectClass       : user
ObjectGUID        : bb6309f7-842c-4d97-8e14-b1dfe572cb5f
SamAccountName    : heyixuan
SID               : S-1-5-21-1396366169-2366585322-2236028602-1606
Surname           :
UserPrincipalName : heyixuan@hxx.tt

DistinguishedName : CN=何小瑶,OU=创意中心,OU=用户组,OU=集团,DC=hxx,DC=tt
Enabled           : True
GivenName         : 何小瑶
Name              : 何小瑶
ObjectClass       : user
ObjectGUID        : 177b8b85-b6e0-44c7-b102-808cc1a78b19
SamAccountName    : hexiaoyao
SID               : S-1-5-21-1396366169-2366585322-2236028602-1607
Surname           :
UserPrincipalName : hexiaoyao@hxx.tt

完整的命令执行成功将创意中心下的所有用户添加到 CreativeCenter 组。

测试使用英文做为用户名称,且使用 -members $_.name 获取值

通过获取用户的属性 “Name” 和 “SamAccountName” 值均为英文的 “hexiaomeng”;

get-aduser -filter * -searchbase "ou=企划中心,ou=用户组,ou=集团,dc=hxx,dc=tt"


DistinguishedName : CN=hexiaomeng,OU=企划中心,OU=用户组,OU=集团,DC=hxx,DC=tt
Enabled           : True
GivenName         : hexiaomeng
Name              : hexiaomeng
ObjectClass       : user
ObjectGUID        : 0d2de429-486a-484f-896b-3f2a0bce152a
SamAccountName    : hexiaomeng
SID               : S-1-5-21-1396366169-2366585322-2236028602-1609
Surname           :
UserPrincipalName : hexiaomeng@hxx.tt

执行完整命令 get-aduser -filter * -searchbase “ou=企划中心,ou=用户组,ou=集团,dc=hxx,dc=tt” | foreach{add-adgroupmember -identity MDCenter -members $_.name}

get-aduser -filter * -searchbase "ou=企划中心,ou=用户组,ou=集团,dc=hxx,dc=tt" | foreach{add-adgroupmember -identity MDCenter -members $_.name}

也是正常执行完成的,所以为了确保全局通用,如果使用中文做为 name 属性值,那么使用 SamAccountName 的属性,如果 name 属性值是英文,那么 SamAccountName 和 name 都可以做为调用属性。

测试 -members $_.UserPrincipalName 属性

同时,使用-members $_.UserPrincipalName 属性也是产生报错,所以使用 SamAccountName 的属性是万能通用的。

get-aduser -filter * -searchbase "ou=创意中心,ou=用户组,ou=集团,dc=hxx,dc=tt" | foreach{add-adgroupmember -identity CreativeCenter -members $_.UserPrincipalName}
add-adgroupmember : 无法在 “DC=hxx,DC=tt” 下找到标识为 “heyixuan@hxx.tt” 的对象。
所在位置 行:1 字符: 80
+ ... " | foreach{add-adgroupmember -identity CreativeCenter -members $_.Us ...
+                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (heyixuan@hxx.tt:ADPrincipal) [Add-ADGroupMembe
   r], ADIdentityNotFoundException
    + FullyQualifiedErrorId : SetADGroupMember.ValidateMembersParameter,Microsoft.ActiveDirec
   tory.Management.Commands.AddADGroupMember

add-adgroupmember : 无法在 “DC=hxx,DC=tt” 下找到标识为 “hexiaoyao@hxx.tt” 的对象。
所在位置 行:1 字符: 80
+ ... " | foreach{add-adgroupmember -identity CreativeCenter -members $_.Us ...
+                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (hexiaoyao@hxx.tt:ADPrincipal) [Add-ADGroupMemb
   er], ADIdentityNotFoundException
    + FullyQualifiedErrorId : SetADGroupMember.ValidateMembersParameter,Microsoft.ActiveDirec
   tory.Management.Commands.AddADGroupMember

0 条评论

昵称

沙发空缺中,还不快抢~