我是 PowerShell 和 AD 的新手,我有一个小任务,但发现很难完成。有人可以帮我吗?
任务如下:
AD中定义了3个组,分别是
"CN=Technology Champion,OU=Exchange Distribution Lists,OU=Groups,DC=dpsnc,DC=local"
"CN=Media Contacts-ES,OU=School Groups,OU=Groups,DC=dpsnc,DC=local"
"CN=Media Contacts-SS,OU=School Groups,OU=Groups,DC=dpsnc,DC=local"
我需要做的是在“域用户”中存在的所有用户中,我需要检查用户是否属于上述任何一个组。如果 ADUser 至少属于上述一个组,则检查其“部门 ID”属性(部门 ID 为“304-BEE”),并根据部门 ID 属性,我必须将 ADObject 移动到名称包含“部门 ID”的适当组
"CN=vBrick-ContentApprover.304-BEE.VC - Elementary,OU=Groups,OU=304-BEE,OU=VC - Elementary,DC=dpsnc,DC=local"
"CN=vBrick-ContentApprover.306-BMS.VC - Middle,OU=Groups,OU=306-BMS,OU=VC - Middle,DC=dpsnc,DC=local"
"CN=vBrick-ContentApprover.308-BUR.VC - Elementary,OU=Groups,OU=308-BUR,OU=VC - Elementary,DC=dpsnc,DC=local"
例如:
如果用户是该组的成员"CN=Media Contacts-ES,OU=School Groups,OU=Groups,DC=dpsnc,DC=local"
,那么我需要检查他的dept_id
属性,假设该dept_id
值为“304-BEE”,那么我需要将该 ADObject 移动为该组的成员"CN=vBrick-ContentApprover.304-BEE.VC - Elementary,OU=Groups,OU=304-BEE,OU=VC - Elementary,DC=dpsnc,DC=local"
注意:Powershell 脚本应与 Windows Server 2003 R2 和 Windows Server 2012 兼容
首先,我尝试使用以下脚本通过自定义属性移动 ADUser:
get-qaduser -sizelimit 0 -includedproperties <CustomAttribute> |% {
if ($_.<customattribute> -eq "somevalue"){add-qadgroupmember <somegroup> -member $_}
if ($_.<customattribute> -eq "someothervalue"){add-qadgroupmember <someothergroup> -member $_}
...
...
}
我还没有想出完整的解决方案。我需要一些有关完整脚本的帮助
答案1
该脚本将适用于名为 Teacher 的组(对该脚本进行微小修改也可以使其自动适用于多个组),其中我使用 ADUser 的“title”属性和 ADGroup 的“description”属性来查找匹配项,如果找到匹配项,则将 ADUser 添加到 ADGroup。
$members = Get-ADGroupMember -Identity 'CN=Teacher,CN=Users,DC=DPSTest,DC=local' | %{Get-ADUser $_ -Properties title}
$groups = Get-ADGroup -filter 'name -like "*vBrick-ContentApprover*"' -Properties description
foreach ($member in $members) {
if($groups.description -contains $member.title)
{
Add-ADGroupMember (Get-ADGroup -filter 'description -eq $member.title') -Members $member
}
}
欢迎提出任何建议。谢谢大家!