1. #1
    Membre régulier
    Homme Profil pro
    Tech maintenance Info
    Inscrit en
    août 2009
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

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

    Informations forums :
    Inscription : août 2009
    Messages : 133
    Points : 70
    Points
    70

    Par défaut [VBS][Active Directory] Gestion des erreurs en cas d'utilisateur non présent et de champ nom renseigné.

    Bonjour,
    je voudrais savoir s'il existe une gestion d'erreur - qui soit paramétrable - lors de la recherche d'un utilisateur dans Active Directory.

    Je m'explique :
    Je fais une recherche sur mon AD avec le login d'un utilisateur.
    J'aimerais avoir un message me signalant que le compte n'existe pas.

    Si le compte existe je récupère le contenu du champ "radiomessagerie (PAGER)" et aimerais aussi avoir un message s'il est vide.

    Avez-vous une idée?
    Ci-dessous, mon code.
    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
    OPTION Explicit
     
    Dim objConnection, objCommand, setUserAccontName, objRecordSet, strResult, oRootDSE
     
    'ADS_SCOPE_SUBTREE (variable indiquant jusqu'a combien de niveau descendre)
    Const ADS_SCOPE_SUBTREE = 2
     
    setUserAccontName = InputBox("Entrez le nom du compte utilisateur", "AD - find User PIN Number")
     
    'Recherche du domaine Active Directory courant
    Set oRootDSE = GetObject("LDAP://rootDSE")
     
    'Connexion de type base de donnée à l'AD
    Set objConnection = CreateObject("ADODB.Connection")   
        With objConnection
            .Provider = "ADsDSOObject"
            .Open "Active Directory Provider"
        End With
     
    ' Définition de la recherche
    Set objCommand =   CreateObject("ADODB.Command")
    Set objCommand.ActiveConnection = objConnection
        With objCommand
            .Properties("Page Size") = 1000
            .Properties("Searchscope") = ADS_SCOPE_SUBTREE
            .CommandText = "SELECT pager FROM 'LDAP://" _
                            & oRootDSE.get("defaultNamingContext") _ 
                            & "'WHERE objectCategory='user'" _
                            & "AND sAMAccountName='" & setUserAccontName & "'"
         End With 
     
     
    On Error Resume Next
     
    Set objRecordSet = objCommand.Execute
     
    objRecordSet.MoveFirst
        Do Until objRecordSet.EOF
            strResult = objRecordSet.Fields("pager").Value
            objRecordSet.MoveNext
        Loop
     
    If strResult <> "" Then 
            Wscript.Echo "Le numéro de Radiomessagerie du compte utilisateur: " & UCase(setUserAccontName) & " est: " & strResult
        Else
            Wscript.Echo "Le numéro de Radiomessagerie n'a pas été trouvé"
    End If

  2. #2
    Membre régulier
    Homme Profil pro
    Tech maintenance Info
    Inscrit en
    août 2009
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

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

    Informations forums :
    Inscription : août 2009
    Messages : 133
    Points : 70
    Points
    70

    Par défaut

    Bonjour,

    Dans un 1er temps je voudrais détecter si le compte utilisateur existe.
    Pour ce fait j'aimerai utiliser la propriété RecordCount de l'objet Recordset si elle est égale à 0 sur l'attribut " samAccountName".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    objCommand.CommandText = "SELECT  samAccountName  FROM 'LDAP://" _
                            & oRootDSE.get("defaultNamingContext") _ 
                            & "'WHERE objectCategory='user'
    "

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set objRecordSet = objCommand.Execute

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If objRecordSet.RecordCount = 0 Then
    Wscript.Echo "Ce nom de compte n'est pas utilisé"
    Else
    Wscript.Echo "Ce non de compte est déja utilisé."
    End If
    Je ne parviens pas a l'intégrer a mon code.
    Un peu d'aide svp?

  3. #3
    Membre régulier
    Homme Profil pro
    Tech maintenance Info
    Inscrit en
    août 2009
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

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

    Informations forums :
    Inscription : août 2009
    Messages : 133
    Points : 70
    Points
    70

    Par défaut

    Bonjour,

    Pouvez-vous me mettre sur la piste concernant la méthode qui me permettrait de faire appel à l'attribut "pager" ou "samAccountName". Selon le cas échéant?

  4. #4
    Membre actif
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    novembre 2011
    Messages
    143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : novembre 2011
    Messages : 143
    Points : 261
    Points
    261

    Par défaut

    Bonjour NeriXs !

    Je te propose quelque chose du genre ... (à optimiser à ta sauce !)

    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
    Const ADS_SCOPE_SUBTREE = 2
    strUserSAMAccountName = InputBox("Entrer l'identifiant recherché")
    If strUserSAMAccountName = "" Then Wscript.Quit
    Set objConnection = CreateObject("ADODB.Connection")
    objConnection.Provider = "ADsDSOObject"
    objConnection.Open "Active Directory Provider"
    Set objCommand = CreateObject("ADODB.Command")
    Set objCommand.ActiveConnection = objConnection
    objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE 
    objCommand.CommandText = "SELECT pager FROM 'LDAP://" & GetObject("LDAP://RootDSE").Get("DefaultNamingContext") & _
    	"' WHERE objectCategory='user' AND sAMAccountName = '" & strUserSAMAccountName & "'"
    Set objRecordSet = objCommand.Execute
    If Not objRecordSet.EOF Then
    	strResult = objRecordSet.Fields("pager").value
    	If strResult <> "" Then
            Wscript.Echo "Le numéro de Radiomessagerie du compte utilisateur: " & UCase(setUserAccontName) & " est: " & strResult
        	Else
            Wscript.Echo "Le numéro de Radiomessagerie n'a pas été trouvé"
    	End If
    Else
    	MsgBox strUserSAMAccountName & " non trouvé !"
    End If
    ++

  5. #5
    Membre régulier
    Homme Profil pro
    Tech maintenance Info
    Inscrit en
    août 2009
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

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

    Informations forums :
    Inscription : août 2009
    Messages : 133
    Points : 70
    Points
    70

    Par défaut

    Bonjour,
    Merci CachLab c'est impeccable
    J'aimerais aussi gérer les erreurs de réseau ou d'AD non accessible!
    Est-ce qu'avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if err <> 0 then 
    wscript.echo "Erreur: " & err.description
    wscript.quit
    end If
    Cela est possible?

  6. #6
    Membre régulier
    Homme Profil pro
    Tech maintenance Info
    Inscrit en
    août 2009
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

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

    Informations forums :
    Inscription : août 2009
    Messages : 133
    Points : 70
    Points
    70

    Par défaut

    Bonjour,
    J'ai implanté la gestion d'erreur, mais obtiens des messages peux explicites!
    Exemple:
    Si pas de réseau:
    Erreur: Aucun texte de commande n'a été défini pour l'objet de commande.
    Voici le code:

    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
    OPTION Explicit
     
    Dim objConnection, objCommand, objRecordSet, strResult, oRootDSE, strUserSAMAccountName
     
    'ADS_SCOPE_SUBTREE (variable indiquant jusqu'a combien de niveau descendre)
    Const ADS_SCOPE_SUBTREE = 2
     
    strUserSAMAccountName = InputBox("Entrez l'identifiant recherché", "AD - find User PIN Number.")
     
    ' On quitte si aucune valeur n'a été saisi.
    	If strUserSAMAccountName = "" Then
    		wscript.echo "Attention: ce champ ne peut étre vide!"
    		Wscript.Quit
    	end If
     
    On Error Resume Next
     
    'Recherche du domaine Active Directory courant
    Set oRootDSE = GetObject("LDAP://rootDSE")
     
    'Connexion de type base de donnée à l'AD
    Set objConnection = CreateObject("ADODB.Connection")
    	With objConnection
    		.Provider = "ADsDSOObject"
    		.Open "Active Directory Provider"
    	End With
     
    ' Définition de la recherche
    Set objCommand = CreateObject("ADODB.Command")
    Set objCommand.ActiveConnection = objConnection
    	With objCommand
    		.Properties("Page Size") = 1000
    		.Properties("Searchscope") = ADS_SCOPE_SUBTREE 
    		.CommandText = "SELECT pager FROM 'LDAP://" _
         					& oRootDSE.get("defaultNamingContext") _ 
    						& "' WHERE objectCategory='user' AND sAMAccountName = '" _
    						& strUserSAMAccountName & "'"
         End With     
     
    Set objRecordSet = objCommand.Execute
     
    ' On signale l'erreur.	
    	if err <> 0 then 
    		wscript.echo "Erreur: " & err.description
    		wscript.quit
    	end If
     
    If Not objRecordSet.EOF Then
    	strResult = objRecordSet.Fields("pager").value
    	If strResult <> "" Then
            Wscript.Echo "Le numéro de Radiomessagerie du compte utilisateur: " & UCase(strUserSAMAccountName) & " est: " & strResult
        Else
            Wscript.Echo "Aucun N° de Radiomessagerie n'est associé a l'identifiant: " & UCase(strUserSAMAccountName)
    	End If
    Else
    	Wscript.Echo "L'identifiant: " & UCase(strUserSAMAccountName)& " n'a pas été trouvé!"
    End If
     
    ' On reprendre la gestion des erreurs suivante
    ON ERROR GOTO 0

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 08/01/2016, 18h34
  2. Réponses: 0
    Dernier message: 31/07/2011, 20h30
  3. [active directory] Gestion des PC clients
    Par m_jaz3 dans le forum Windows Serveur
    Réponses: 2
    Dernier message: 26/03/2007, 01h09
  4. [Active Directory]Gestion des groupes d'accès à un site web
    Par apoingsfermes dans le forum Accès aux données
    Réponses: 4
    Dernier message: 06/03/2007, 10h58
  5. Réponses: 2
    Dernier message: 13/02/2007, 13h13

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