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

VB.NET Discussion :

Ajout dans un script l'état d'un compte dans l'AD


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Août 2012
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Août 2012
    Messages : 12
    Par défaut Ajout dans un script l'état d'un compte dans l'AD
    Bonjour,

    J'utilise le script ci-dessous (Récupère les infos dans l'AD) que j'ai récupéré et souhaiterais ajouter à ce script l'état du compte (actif ou inactif).
    J'ai essayé de le bidouiller pour ajouter à mon fichier de sortie cette information là, mais je n'y arrive pas.
    Merci de vos réponses.

    strContainer = "CN=Users,DC=dm,DC=toto"
    strName = "Guest"
    strListMemberOf = ""
    On error resume next
    Const ADS_SCOPE_SUBTREE = 2
    Set objFSO = CreateObject("Scripting.FileSystemObject")

    strDomain = "LDAP://DC=dm,DC=toto"
    strUser="Hostname;Description;AdsPath;Membre de"& vbCrLf

    Set objConnection = CreateObject("ADODB.Connection")
    Set objCommand = CreateObject("ADODB.Command")
    objConnection.Provider = "ADsDSOObject"
    objConnection.Open "Active Directory Provider"
    Set objCommand.ActiveConnection = objConnection

    objCommand.Properties("Page Size") = 1000
    objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE

    objCommand.CommandText = _
    "SELECT name, AdsPath from '"& strDomain &"' " _
    &"WHERE objectCategory='user'"
    Set objRecordSet = objCommand.Execute

    objRecordSet.MoveFirst
    Do Until objRecordSet.EOF
    strChemin = objRecordSet.Fields("AdsPath").Value
    Set objItem = GetObject(strChemin)

    strdescription = objItem.Get("description")
    If Not IsEmpty(strdescription) Then Description = strdescription Else Description = "" End If
    strmemberOf = objItem.GetEx("memberOf")
    For Each Item in strmemberOf
    strListMemberOf = strListMemberOf & Item & ";"
    Next
    strUser = strUser & objRecordSet.Fields("Name").Value & ";" _
    & Description & ";" _
    & objRecordSet.Fields("AdsPath").Value & ";" _
    & "" & strListMemberOf & "" & ";" _
    & VbCrLf
    objRecordSet.MoveNext
    strListMemberOf = ""
    Loop

    'Création du fichier de log dans le répertoire désigné par l'utilisateur avec le nom par défaut
    Set objFile = objFSO.CreateTextFile("D:\_ListeUserADDM.csv")
    objFile.WriteLine StrUser
    objFile.Close

    MsgBox ("Fini, le fichier se trouve : D:\_ListeUserADDM.csv")

  2. #2
    Membre éclairé Avatar de DeWaRs
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Décembre 2006
    Messages
    291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 291
    Par défaut
    Hello,

    Un début de piste :

    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
       Dim LDAP As New DirectoryEntry("LDAP://tonLDAP")
                Dim searcher As DirectorySearcher = New DirectorySearcher(LDAP)
                searcher.PropertiesToLoad.Add("cn")
                searcher.PropertiesToLoad.Add("givenname")
                searcher.PropertiesToLoad.Add("sn")
                searcher.PropertiesToLoad.Add("telephoneNumber")
                searcher.PropertiesToLoad.Add("mail")
                searcher.PropertiesToLoad.Add("physicalDeliveryOfficeName")
                searcher.PropertiesToLoad.Add("SAMAccountName")
                searcher.PropertiesToLoad.Add("Description")
                searcher.PropertiesToLoad.Add("department")
                searcher.PropertiesToLoad.Add("Company")
                searcher.PropertiesToLoad.Add("displayName")
                searcher.PropertiesToLoad.Add("l")
                searcher.PropertiesToLoad.Add("name")
                searcher.PropertiesToLoad.Add("userPrincipalName")
                searcher.PropertiesToLoad.Add("mobile")
                searcher.PropertiesToLoad.Add("extensionAttribute2")
                searcher.PropertiesToLoad.Add("co")
                searcher.PropertiesToLoad.Add("userAccountControl")
     
                searcher.Filter = "(&(objectCategory=user)"
     
                If DDLUser.SelectedValue = "" Then
                    mpeDualLoginAtempt.Show()
                    Exit Sub
                End If
                searcher.Filter = searcher.Filter & "(displayName=" & DDLUser.SelectedValue & ")"
     
                'search only active account
                searcher.Filter = searcher.Filter & "(!userAccountControl:1.2.840.113556.1.4.803:=2)" & ")"
     
     
                Dim results As System.DirectoryServices.SearchResultCollection
                Try
                    results = searcher.FindAll()
                Catch ex As Exception
                    Exit Sub
                End Try
    La ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                searcher.Filter = searcher.Filter & "(!userAccountControl:1.2.840.113556.1.4.803:=2)" & ")"
    permet de ne retourner que les comptes actifs.

    Cordialement.

    DeWaRs

  3. #3
    Membre averti
    Inscrit en
    Août 2012
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Août 2012
    Messages : 12
    Par défaut
    En fait mes connaissances étant assez limité, je voulais surtout me baser sur le code que j'ai fourni et juste d'ajouter le status du compte car il me permet d'extraire aussi le résultat dans un fichier texte.
    En partant d'une autre base je crains de ne plus réussir à faire ce ce que je veux.

Discussions similaires

  1. Réponses: 12
    Dernier message: 02/02/2013, 00h14
  2. Réponses: 10
    Dernier message: 10/05/2010, 15h09
  3. Réponses: 1
    Dernier message: 28/08/2009, 21h36
  4. Réponses: 11
    Dernier message: 24/06/2009, 15h56

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