В. Как с помощью сценария проверить, существует ли группа в Active Directory (AD), и в случае отсутствия создать ее?
О. Если нужна универсальная, а не глобальная группа, то нужно заменить ADS_GROUP_TYPE_GLOBAL_GROUP на ADS_GROUP_TYPE_UNIVERSAL_GROUP в команде groupType Put. Также необходимо изменить значения domainController, contextpath и groupName.
'Назначить обработку ошибок.
on error resume Next
Const ADS_GROUP_TYPE_GLOBAL_GROUP = &h2
Const ADS_GROUP_TYPE_UNIVERSAL_GROUP = &h8
Const ADS_GROUP_TYPE_SECURITY_ENABLED = &h80000000
Const ADS_PROPERTY_APPEND = 3
domainController="dalsdc01"
contextpath="ou=Testing,dc=geniant,dc=net"
groupName="testsecgroup"
'Привязка к серверу LDAP.
set context=getObject("LDAP://" & domainController & "/" & contextpath)
'Обработка ошибки и обратная связь
if err.number<>0 then
wscript.echo "Error connecting to AD " & err.number,
err.description
err.Clear
end if
set objGroup = GetObject("LDAP://CN="&groupName&","&contextpath)
If Err.Number = "-2147016656" then 'If group was not found
err.clear
'Создать группу.
Set objGroup = context.Create("Group","cn="&groupName)
if err.number<>0 then
wscript.echo "Error creating group " & err.number,
err.description
err.Clear
end if
objGroup.Put "sAMAccountName", groupName
objGroup.Put "description", "Testing Group"
objGroup.Put "groupType", ADS_GROUP_TYPE_GLOBAL_GROUP Or _
ADS_GROUP_TYPE_SECURITY_ENABLED
objGroup.setInfo
if err.number<>0 then
wscript.echo "Error modifying group " & err.number,
err.description
err.Clear
end if
end if
WScript.Quit(0)