IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBScript Discussion :

comparaison entre données d'un fichier et active directory


Sujet :

VBScript

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 30
    Par défaut comparaison entre données d'un fichier et active directory
    Bonjour à tous,


    Avant de vous exposer mon problème, je vous explique ma situation :
    Je possède une base mysql. De cette base mysql via un script, j'extrais mes utilisateurs dans un fichier au format csv. Ce fichier csv est ensuite traiter via un script vbs afin de mettre les utilisateurs dans un active directory.

    Mon problème est le suivant : lorsque toto est supprimé de ma base mysql, toto est encore présent dans l'active directory.

    je peux supprimer toto via ce script :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Set conteneur = GetObject("LDAP://OU=informatique,DC=lan,DC=fr")
    conteneur.Delete "user", "CN=Toto"
    Set conteneur = nothing
    Ce script est utile mais il ne supprima que toto. J'aimerais rendre ce script automatique et qu'il puisse me supprimer tous les utilisateurs en effectuant une comparaison entre mon fichier csv et l'active directory.

    je sais comment lire des données d'un fichier texte mais je ne sais pas comment je dois m'y prendre pour effectuer cette comparaison


    Cordialement



    Stefdu59

  2. #2
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    pour comparer 2 chaine de caractéres l'opérateur à utiliser est : =



    montre nous ton code de lecture du fichier...

    transforme ton code de destruction d'un utilisateur en procédure avec comme paramètre le nom de l'utilisateur à enlever de ta liste..

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 30
    Par défaut
    voici mon code actuellement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    Option Explicit
     
    Dim Fso
    Dim fichier
    Const ForReading = 1
    Dim Ligne
    Dim tableau
    Dim nom
    Dim conteneur
     
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set fichier = fso.OpenTextFile("c:\liste.csv", ForReading)
     
    Do While (Not fichier.AtEndOfStream)
      Ligne = fichier.Readline
      tableau = Split(Ligne, ";")
      Suppr_utilisateur tableau (0)
    Loop
     
    Function Suppr_utilisateur(nom)
    Set conteneur = getObject("LDAP://OU=Informatique,DC=Lan,DC=fr")
    conteneur.Delete "user","CN=" & nom
    End Function
    ce script va supprimer les utilisateurs en fonction des noms qui se trouve dans le fichier mais c'est pas ça mon but.

    mon but étant :
    mon script interroge l'active directory. Pour un utilisateur trouver dans l'ad, il compare cet utilisateur avec les utilisateurs présent dans le fichier csv. Si l'utilisateur n'est pas présent dans le fichier, il est supprimer de l'ad.


    mon script a débuté à l'envers mais je pense être quand même sur la bonne voie ou au moins un début correct. Le soucis c'est que je sais pas comment interrogé mon ad et effectuer une comparaison avec mon fichier



    Stefdu59

  4. #4
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    pour le test d'existence dans ton fichier csv.. tu pourrai lire ton fichier et le placer dans un dictionnaire (dictionnary).

    http://tahe.developpez.com/web/vbscr...e=page_3#LII-R

    et ensuite :

    L'existence d'une clé peut être testée avec la méthode exists :
    dico.exists("clé") est vrai si la clé "clé" existe dans le dictionnaire

  5. #5
    Membre expérimenté
    Inscrit en
    Mai 2008
    Messages
    189
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 189
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set fichier = fso.OpenTextFile("c:\liste.csv", ForReading)
    Set objDictionary = CreateObject("Scripting.Dictionary")
     
    'Remplissage d'un dictionnaire d'utilisateurs à comparer
    Do While (Not fichier.AtEndOfStream)
      Ligne = fichier.Readline
      objDictionary.Add Ligne,Ligne
    Loop
     
    ' cheminLDAP indique dans quel chemin LDAP la recherche a lieu
    cheminLDAP=""
    ' le nom de domaine est contenu dans le premier argument
    nomDomaine="monDomaine.com"
     
    'il faut decouper le nom de domaine a chaque '.'
    'pour le formater de la sorte  
    'test.local => dc=test,dc=local
    decoupe=Split(nomDomaine,"." )
    for k=LBound(decoupe) To Ubound(decoupe)-1
           if len(decoupe(k))>0 then  
                cheminLDAP=cheminLDAP + "dc=" + decoupe(k) + ","
    next
    if len(decoupe(Ubound(decoupe)))>0 then  
          cheminLDAP=cheminLDAP + "dc=" + decoupe(Ubound(decoupe))
     
     
    Const ADS_SCOPE_SUBTREE = 2
     
    'l'interogation de AD se fait par ADODB
    'obtenir un objet connexion ADODB
     
    Set objConnection = CreateObject("ADODB.Connection" )
     
    'cree un objet command qui va permetre de faire une requete
    Set objCommand =   CreateObject("ADODB.Command" )
     
    'parametrage de la connexion
    objConnection.Provider = "ADsDSOObject"
    objConnection.Open "Active Directory Provider"
    Set objCommand.ActiveConnection = objConnection
     
     
    objCommand.Properties("Page Size" ) = 5000
    'indique que la recherche a lieu dans tout le sous arbre du domaine
    objCommand.Properties("Searchscope" ) = ADS_SCOPE_SUBTREE  
    ' La requete LDAP
    On error resume next
    'objectCategory=user pour lister tous les utilisateurs'
    'objectCategory=user pour lister tous les groupes'
    objCommand.CommandText = "SELECT * FROM 'LDAP://"+cheminLDAP+"' WHERE objectCategory='user'"  
    Set objRecordSet = objCommand.Execute
    if Err<>0 then
     Wscript.Echo ("Une erreur s'est produite, vérifier le nom de domaine" )
     exit sub
    end if
    On error goto 0
     
    objRecordSet.MoveFirst
     
    Do Until objRecordSet.EOF
    user = objRecordset.Fields(0).Value
    objRecordSet.MoveNext
    If Not objDictionary.Exists(user) then wscript.echo "Suppression de l'utilisateur : " & user
    Loop
    objConnection.close
    Essaie ce code là, ca devrait t'aider. Il ne supprime rien, il vérifie la comparaison.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 30
    Par défaut
    merci à vous pour votre aide.


    je viens de tester le code pour connexion AD et ça fonction trés bien. Le soucis viens du fichier csv et du dictionnaire.

    mon fichier csv sert à la base a créer mes utilisateurs dans l'active directory. Pour éviter de jongler sur plusieurs fichier csv pour l'ajout et la suppression des utilisateurs, je préférerais utiliser 1 seul et même fichier.

    mon fichier csv est constituer de cette manière :
    nomcomplet;login;nom;prenom;password;ou
    (ou étant l'unité d'organisation où se situe l'utilisateur)

    lors de la requête pour voir si l'utilisateur existe avec le code de Spantemonium, La comparaison avec mon fichier csv ne se fais pas puisque je retrouve des utilisateurs à supprimer alors qu'ils se trouvent dans le fichier


    voici mon script actuel : (pour la connexion au domaine j'ai repris ce que j'avais mis dans mon script de création)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    Option Explicit
     
    'déclaration des variables
    Dim fso
    Dim fichier
    Dim objDictionary
    Const ForReading = 1
    Dim Ligne
    Dim nom
    Dim conteneur
    Dim Root
    Dim DomainPath
    Dim objConnection
    Dim objCommand
    Dim objRecordSet
    Dim user
    Const ADS_SCOPE_SUBTREE = 2
     
    'déclaration du fichier et du dictionnaire
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set fichier = fso.OpenTextFile("c:\liste.csv", ForReading)
    Set objDictionary = CreateObject("Scripting.Dictionary")
     
    'boucle pour lire le fichier ligne par ligne et stocker dans le dictionnaire
    Do While (Not fichier.AtEndOfStream)
      Ligne = fichier.Readline
      objDictionary.Add Ligne,ligne
    Loop
     
     'determine le chemin LDAP
    Set Root = GetObject("LDAP://RootDSE")
    DomainPath = Root.Get("DefaultNamingContext")
     
    'Création objetc pour connexion avec active directory
    Set objConnection = CreateObject("ADODB.Connection")
     
    'Création d'objet pour faire la requete sur l'active directory
    Set objCommand = CreateObject("ADODB.Command")
     
    'paramètre de la connexion
    objConnection.Provider = "ADsDSOObject"
    objConnection.Open "Active Directory Provider"
    Set objCommand.ActiveConnection = objConnection
    objCommand.Properties("Page Size") = 500
    objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
     
    'requete LDAP
    objCommand.CommandText = "SELECT * FROM 'LDAP://"+DomainPath+"' WHERE objectCategory='user'"
    Set objRecordSet = objCommand.Execute
    objRecordSet.MoveFirst
    Do Until objRecordSet.EOF
    user = objRecordset.Fields(0).Value
    objRecordSet.MoveNext
    If Not objDictionary.Exists(user) then wscript.echo "Suppressions de l'utilisateur : " & user
    Loop
    objConnection.close
     
     
    'fonction pour supprimer l'utilisateur
    Function Suppr_utilisateur(nom)
    Set conteneur = getObject("LDAP://OU=Informatique,DC=lan,DC=fr")
    conteneur.Delete "user","CN=" & nom
    End Function

  7. #7
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Affiche les données que tu met dans ton dictionnaire ... il te faut utiliser le nom comme clef.. et pas la ligne entière..

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 30
    Par défaut
    Bonjour


    désolé de répondre que maintenant.

    J'arrive bien à créer une clé "nom" et affecter une valeur via .add.
    Mais je n'arrive pas à dire à ma clé "nom" qu'elle dois prendre la 3ème valeur aprés mes ; de mon fichier csv ?

    de plus je fais mon .add dans ma boucle "do while" et lorsqu'il passe à la deuxième ligne de mon fichier j'ai une erreur qui me dis que la clé "nom" existe déjà.

    pour l'affichage j'utilise cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if objDictionary.exists("nom") then wscript.echo "la clé nom existe et sa valeur est :" & objDictionary.item("nom")

    Stefdu59

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 4
    Par défaut
    Citation Envoyé par stefdu59 Voir le message
    Bonjour à tous,


    Avant de vous exposer mon problème, je vous explique ma situation :
    Je possède une base mysql. De cette base mysql via un script, j'extrais mes utilisateurs dans un fichier au format csv. Ce fichier csv est ensuite traiter via un script vbs afin de mettre les utilisateurs dans un active directory.

    Mon problème est le suivant : lorsque toto est supprimé de ma base mysql, toto est encore présent dans l'active directory.

    je peux supprimer toto via ce script :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Set conteneur = GetObject("LDAP://OU=informatique,DC=lan,DC=fr")
    conteneur.Delete "user", "CN=Toto"
    Set conteneur = nothing
    Ce script est utile mais il ne supprima que toto. J'aimerais rendre ce script automatique et qu'il puisse me supprimer tous les utilisateurs en effectuant une comparaison entre mon fichier csv et l'active directory.

    je sais comment lire des données d'un fichier texte mais je ne sais pas comment je dois m'y prendre pour effectuer cette comparaison


    Cordialement



    Stefdu59
    Petite question qui n'a rien à voir avec le sujet...
    Que se passe-t-il si je renomme toto dans l'outil AD ?
    Melle toto épouse Mr. titi ...

  10. #10
    Membre expérimenté
    Inscrit en
    Mai 2008
    Messages
    189
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 189
    Par défaut
    Citation Envoyé par stefdu59 Voir le message
    J'arrive bien à créer une clé "nom" et affecter une valeur via .add.
    Mais je n'arrive pas à dire à ma clé "nom" qu'elle dois prendre la 3ème valeur aprés mes ; de mon fichier csv ?
    Pour cà il faut remplacer le

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    objDictionary.Add Ligne,Ligne
    par


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    array = Split(Ligne, ";")
    nom = array(2)  '2 pour le nom, 1 pour le login si tu préfère
    objDictionary.Add nom,Ligne 'on garde la ligne dans la valeur du dictionnaire,
    'mais on vérifie l'existence avec la clé seule.

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 30
    Par défaut
    Je ne pensais pas que je devais utiliser un tableau (array) pour faire ça vu que pour moi le dictionnaire faisais office de tableau. Merci à toi spantemonium


    voici ma boucle "do while" actuelle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Do While (Not fichier.AtEndOfStream)
      Ligne = fichier.Readline
      tableau = split(Ligne, ";")
      nom = tableau(3)
      objDictionary.Add nom,Ligne
      if objDictionary.exists(nom) then wscript.echo "la clé nom existe et sa valeur est :" & objDictionary.item(nom)
    Loop
    cette boucle fonctionne dans le sens où "nom" a bien comme valeur les lignes de mon fichier texte. Le soucis c'est que avec le " objDictionary.Add nom,Ligne" cela m'affecte toute la valeur de ma ligne dans nom. Du coup la ligne nom = tableau(3) deviens obsolète



    Stefdu59

  12. #12
    Membre expérimenté
    Inscrit en
    Mai 2008
    Messages
    189
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 189
    Par défaut
    Elle n'est pas indispensable en effet, mais peut t'aider à la compréhension à la relecture du code.


    Si tu ne veux pas utiliser les autres données que le nom tu peux aussi faire un :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    objDictionary.Add nom,nom

    Autre détail, je pense que c'est tableau(2) car l'indice commence à 0


    A toi de voir, t'as toutes les cartes en main maintenant.


    Enjoy^^

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 30
    Par défaut
    Cela fonctionne parfaitement et la comparaison se fais bien. Je n'ai plus qu'as insérer ma fonction pour supprimer l'utilisateur et ça devrais aller.

    En revanche, j'ai un soucis pour ma requête sql.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "SELECT * FROM 'LDAP://"+DomainPath+"' WHERE objectCategory='user'"
    cette requete me retourne bien tous les utilisateurs de mon AD. Seulement elle me retourne aussi les utilisateurs et compte admin du dossier Users (dossier de base dans l'active directory)
    Sachant que tous mes utilisateurs seront dans des OU, comment je peux faire pour exclure les utilisateurs du dossier Users?

    les OU sont en OU= et le dossier Users est en CN=. J'ai tenté de faire aprés mon "where" un CN<>'Users' mais ça ne fonctionne pas.



    Stefdu59

  14. #14
    Membre expérimenté
    Inscrit en
    Mai 2008
    Messages
    189
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 189
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if Instr(OUdelutilisateur,"Users") Then
    'rien
    Else
    'Traitement
    End If
    ca doit être un truc du genre

  15. #15
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 30
    Par défaut
    finalement je suis revenu sur mon architecture de mon ad pour éviter que la suppression ne supprime mes compte admin ^^

    voici mon code actuel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    Option Explicit
     
    'déclaration des variables
    Dim fso
    Dim fichier
    Dim objDictionary
    Const ForReading = 1
    Dim i
    Dim cles
    Dim tableau
    Dim Ligne
    Dim nom
    Dim conteneur
    Dim Root
    Dim DomainPath
    Dim objConnection
    Dim objCommand
    Dim objRecordSet
    Dim user
    Const ADS_SCOPE_SUBTREE = 2
     
    'déclaration du fichier et du dictionnaire
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set fichier = fso.OpenTextFile("c:\liste.csv", ForReading)
    Set objDictionary = CreateObject("Scripting.Dictionary")
     
    'boucle pour lire le fichier ligne par ligne et stocker dans le dictionnaire
    Do While (Not fichier.AtEndOfStream)
      Ligne = fichier.Readline
      tableau = split(Ligne, ";")
      nom = tableau(0)
      objDictionary.Add nom,nom
      'if objDictionary.exists(nom) then wscript.echo "la clé nom existe et sa valeur est :" & objDictionary.item(nom)
    Loop
     
    'cles = objDictionary.keys
    'For i=0 To ubound(cles)
    'wscript.echo "objDictionary(" & cles(i) &")=" & objDictionary.item(cles(i))
    'Next
     
     'determine le chemin LDAP
    Set Root = GetObject("LDAP://RootDSE")
    DomainPath = Root.Get("DefaultNamingContext")
     
    'Création objet pour connexion avec active directory
    Set objConnection = CreateObject("ADODB.Connection")
     
    'Création d'objet pour faire la requete sur l'active directory
    Set objCommand = CreateObject("ADODB.Command")
     
    'paramètre de la connexion
    objConnection.Provider = "ADsDSOObject"
    objConnection.Open "Active Directory Provider"
    Set objCommand.ActiveConnection = objConnection
    objCommand.Properties("Page Size") = 500
    objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
     
    objCommand.CommandText = "SELECT CN FROM 'LDAP://OU=Test,"+DomainPath+"' WHERE objectCategory='user'"
    'requete LDAP
    Set objRecordSet = objCommand.Execute
    objRecordSet.MoveFirst
    Do Until objRecordSet.EOF
    user = objRecordset.Fields(0).Value
    objRecordSet.MoveNext
    If Not objDictionary.Exists(user) then Suppr_Utilisateur(user)
    Loop
    objConnection.close
     
     
    'fonction pour supprimer l'utilisateur
    Function Suppr_utilisateur(nom)
    Set conteneur = getObject("LDAP://OU=Test,DC=Lan,DC=fr")
    conteneur.Delete "user","CN=" & nom
    End Function
    ma fonction supprime bien l'utilisateur simplement elle ne cible que l'OU Test. Or dans test il y a d'autre OU. Par quel moyen puis-je procéder pour ne pas être limiter à 1 seule OU?



    Stefdu59

  16. #16
    Membre expérimenté
    Inscrit en
    Mai 2008
    Messages
    189
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 189
    Par défaut
    doit y avoir une constante Subtree dans ta requete qui permet d'interroger les sous-ous.

    Recherche un peu sur internet.

  17. #17
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 30
    Par défaut
    Bonjour à tous



    Mon script actuel fais bien une recherche dans tout l'ad via ADS_SCOPE_SUBTREE.

    Le soucis viens du faite que lors de la fonction de suppression, j'ai une erreur comme quoi "l'objet ne se trouve pas sur le serveur".

    voici ma fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Function Suppr_utilisateur(nom)
    Set conteneur = getObject("LDAP://OU=Test,DC=Lan,DC=fr")
    conteneur.Delete "user","CN=" & nom
    End Function
    petite précision : Test est l'ou racine de toutes mes autres OU



    Stefdu59

  18. #18
    Membre expérimenté
    Inscrit en
    Mai 2008
    Messages
    189
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 189
    Par défaut
    Pour la suppression j'utilise le login name :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Set objDomain = GetObject("WinNT://" & strDomain)
    objDomain.Delete "User", loginName
    loginName doit être renseigné avant bien évidemment.

  19. #19
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 30
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Function Suppr_utilisateur(nom)
    Dim LoginName
    LoginName = "CN=" & nom
    Set conteneur = getObject("LDAP://OU=Test," & DomainPath)
    conteneur.Delete "User", LoginName
    End Function
    J'ai modifié ma fonction de cette façon
    Mon script entier fonctionne dans le sens où si un utilisateur ne se trouve pas dans le fichier, il est supprimer. Mais cela ne se produit que pour les utilisateurs de l'OU "Test", hors j'ai des utilisateurs à supprimer dans d'autre OU.


    Est-ce possible dans mon getObject d'inclure en plus de l'OU "Test" toutes les sous-OU ?


    Stefdu59

  20. #20
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 30
    Par défaut
    Finalement je vais abandonner cette méthode qui ne mène à rien


    je vais essayer de voir au niveau de la requête LDAP si je peux récupérer le chemin où se trouve l'utilisateur et le copier dans une variable pour l'exploiter dans ma fonction de suppression.


    n'hésitez pas à m'aiguiller pour réussir à faire ça ^^



    Stefdu59

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [XL-2007] Comparaison de données sur 2 fichiers différents
    Par panzera dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 15/09/2014, 10h55
  2. [SP-2010] problème synchronisation entre sharepoint Moss 2010 et l'active directory
    Par babouchka666 dans le forum SharePoint
    Réponses: 0
    Dernier message: 26/07/2010, 17h13
  3. Copie de fichiers sous ACTIVE DIRECTORY
    Par jordan13 dans le forum VBScript
    Réponses: 11
    Dernier message: 06/04/2009, 11h08
  4. Réponses: 6
    Dernier message: 20/11/2008, 20h26
  5. Comparaison de données entre deux arrays
    Par sironimo dans le forum Général Dotnet
    Réponses: 6
    Dernier message: 20/04/2006, 17h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo