我不是任何类型的脚本编写者,只是试图获取某些域信息的网络专家。
我有一个包含多个OU的域,和通常一样,多个安全组。我试图根据其是域中特定安全组的成员来填充AD中用户帐户的“部门:”字段(在“组织”选项卡下)。
我使用的代码在这里:
{
On Error Resume Next
Set objGroup = GetObject _
("LDAP://CN=LiveTimeCustomers,OU=Service Accounts,DC=domain,DC=com", group)
' WScript.Echo objGroup.Name
For Each objMember In objGroup.Members
' WScript.Echo vbCrlf & " Name: " & objMember.Name
arrGroups = objMember.GetEx("memberOf")
If (Err.Number = 0) Then
On Error GoTo 0
strGroups = LCase(Join(arrGroups))
' Update Department attribute for COMMUNITY SECTION members
If InStr(strGroups, "cn=community section,ou=community,ou=organisation,dc=domain,dc=com") Then
' WScript.Echo vbCrlf & " Name: " & objMember.Name & " is member of COMMUNITY SECTION"
Set objUser = GetObject(objMember.ADsPath)
objUser.department = "COMMUNITY SECTION"
objUser.SetInfo
End If
}
运行时出现的错误是:
行:23字符:5在高速缓存中找不到目录属性。 线条和字符是指此:arrGroups = objMember.GetEx(“ memberOf”)
答案 0 :(得分:0)
我无法在此装备上测试广告素材。但是,正如我在此答案中所述:Reading next line from data file VB Script,此samples library可能会对您有所帮助。
您将看到的顶级类别是“ Active Directory ”。 Could this particular script help?
我将内联脚本示例以供参考:
' List All the Members of a Group
On Error Resume Next
Set objGroup = GetObject _
("LDAP://cn=Scientists,ou=R&D,dc=NA,dc=fabrikam,dc=com")
objGroup.GetInfo
arrMemberOf = objGroup.GetEx("member")
WScript.Echo "Members:"
For Each strMember in arrMemberOf
WScript.echo strMember
Next
答案 1 :(得分:0)
答案不是在vbscript中做!无论如何,谢谢您的帮助。 在建议将此脚本更新为Powershell之后,我做到了。我需要运行“启动”脚本来以管理员身份运行PS,然后调用要用于编辑AD的脚本。
启动脚本:
Start-Process powershell '-NoProfile -File \\domain.com\SYSVOL\domain.com\scripts\SetDepartmentAttribute.ps1' -verb RunAs
Active Directory代码:
`Import-Module ActiveDirectory
Get-ADGroupMember -Identity "COMMUNITY"| Set-ADUser -Replace @{Department="COMMUNITY"}`
所有这些都为您提供了关于DC的执行策略,以允许运行脚本-进行检查。