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 :

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


Sujet :

VBScript

  1. #1
    Invité
    Invité(e)
    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
    Dernière modification par ProgElecT ; 30/05/2017 à 18h23. Motif: Souci avec les balises code? oui, source non ANSI

  2. #2
    Invité
    Invité(e)
    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?
    Dernière modification par ProgElecT ; 01/06/2017 à 11h59.

  3. #3
    Invité
    Invité(e)
    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 averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Novembre 2011
    Messages
    163
    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 : 163
    Points : 304
    Points
    304
    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
    Invité
    Invité(e)
    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?
    Dernière modification par ProgElecT ; 13/06/2017 à 09h35.

  6. #6
    Invité
    Invité(e)
    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, 17h34
  2. Réponses: 0
    Dernier message: 31/07/2011, 19h30
  3. [active directory] Gestion des PC clients
    Par m_jaz3 dans le forum Windows Serveur
    Réponses: 2
    Dernier message: 26/03/2007, 00h09
  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, 09h58
  5. Réponses: 2
    Dernier message: 13/02/2007, 12h13

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