Création et mise à jour d’objets Active Directory
Les objets Active Directory peuvent être utilisés pour localiser des ressources dans un domaine de réseau d’ordinateurs, telles que des utilisateurs, des stratégies de sécurité, des imprimantes, des composants distribués et d’autres ressources. Les objets Active Directory peuvent être créés et mis à jour à l’aide de WMI. Vous pouvez mettre à jour un objet Active Directory lorsque de nouvelles informations sur l’objet deviennent disponibles à l’aide de la notification d’événement WMI. Par exemple, une fois qu’un objet utilisateur Active Directory est créé, vous pouvez détecter sa création à l’aide d’une requête d’événement dans WMI et, lorsque l’événement est reçu, vous pouvez mettre à jour l’objet avec de nouvelles informations.
L’exemple de code suivant crée une nouvelle instance WMI de la classe qui représente l’objet utilisateur Active Directory. L’exemple montre comment assigner des valeurs à différentes propriétés requises pour créer la nouvelle instance de Active Directory utilisateur.
Const cUserID = "WMIUser"
Const cComputerName = "LocalHost"
Const cWMInamespace = "root/directory/LDAP"
Const cWMIclass = "ds_user"
Const ADS_UF_ACCOUNTDISABLE = &h000002
Set objWMILocator = _
CreateObject("WbemScripting.SWbemLocator")
objWMILocator.Security_.AuthenticationLevel = _
wbemAuthenticationLevelDefault
Set objWMIServices = objWMILocator. _
ConnectServer(cComputerName, cWMInamespace, "", "")
Set objWMIClass = objWMIServices.Get(cWMIclass)
Set objWMIInstance = objWMIClass.SpawnInstance_
objWMIInstance.DS_sAMAccountName = userID
objWMIInstance.ADSIPath = "LDAP://CN=" & userID & _
",CN=Users,DC=LissWare,DC=Net"
objWMIInstance.Put_ (wbemChangeFlagCreateOrUpdate Or _
wbemFlagReturnWhenComplete)
WScript.Echo "Active Directory user created."
L’exemple de code suivant met à jour une instance WMI d’un objet Active Directory. Dans cet exemple, l’attribut DisplayName est mis à jour.
set svc = getObject("Winmgmts:root\directory\ldap")
' A context object is used to tell the provider which
' specific properties are going to be updated.
' In most cases, when you update a WMI object you do not
' need to specify an additional context object.
' However, if a context object is not supplied for a
' directory service provider, the update fails.
set octx = createobject( _
"wbemscripting.swbemnamedvalueset")
octx.add "__PUT_EXT_PROPERTIES", array("ds_displayname")
octx.add "__PUT_EXTENSIONS", true
octx.add "__PUT_EXT_CLIENT_REQUEST", true
set objEnum = svc.execQuery( _
"select * from ds_computer where ds_cn = 'userName'", "WQL", 32)
for each obj in objEnum
obj.ds_DisplayName = "updatedName"
obj.put_ 1, octx
next
WScript.Echo "Active Directory user successfully updated"