В. Как с помощью сценария проверить, существует ли группа в 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)

 

Поделитесь материалом с коллегами и друзьями