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 :

List Users OWA,VPN


Sujet :

VBScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    52
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 52
    Par défaut List Users OWA,VPN
    Bonjour,

    je cherche a interroger mon AD dans un language type VBs parce que je n'ai pas d'outils de developpement donc ca me semblait le plus simple.

    Je souhaite creer un tableau avec la liste des mes utilisateurs et savoir s'ils ont les fonctionnalités OWA, OMA, DirectPush (Synchro initié par l'utilisateur) , VPN (autorisation d'acces distant), Option de remise:adresse de transfert.

    Mon probleme, c'est que je ne connais pas le language (pas de probleme pour apprendre meme si c'est urgent !), et que je ne connais le nom des attributs a interroger.

    Si quelqu'un a un bout de code sous le coude, je suis preneur !

    Merci d'avance.
    Fabrice

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    52
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 52
    Par défaut AD, OWA VPN
    Bonjour,
    j'ai commencé un peu de code, mais j'ai plusieurs questions :
    1. Comment bien gerer des champs vides, j'ai vu IsEmpty(), mais comment l'optimiser dans mon code ?
    2. J'ai des erreurs lorsque je recupere si OWA est activé.

    Voila mon code, merci pour le coup de pouce !

    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
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    'Connexion a l'AD
    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") = 2
     
    'Definition de la requete : 
    strSelect = "Name, Description, mail, msExchOmaAdminWirelessEnable, protocolSettings, altRecipient, msNPAllowDialin"
    strFrom = "'LDAP://ou=utilisateurs,dc=MyDomain,dc=local'"
    strWhere = "objectClass='user'"
    objCommand.CommandText = "SELECT " & strSelect & " FROM " & strFrom & " WHERE " & strWhere
     
    'Création d'un recordset d'après la requete
    Set objRecordSet = objCommand.Execute
     
    'Si le recordset contient des enregistrements, alors...
    If objRecordSet.RecordCount > 0 Then
     
    	'On se déplace sur la ligne 2 pour eviter les entetes
    	objRecordSet.MoveFirst
    	objRecordSet.MoveNext
     
    	' on inscrit les enregistrement dans des variables: Nom, description, mail
    	usrName = objRecordSet.Fields("Name").Value
    	usrDescript = objRecordSet.Fields("Description").Value
    	usrMail = objRecordSet.Fields("mail").Value
    	'Fonctionnalité Exchange, Services mobiles
    	usrMobile = MobileConvert(objRecordSet.Fields("msExchOmaAdminWirelessEnable").Value)
    	'Fonctionnalité Exchange, Protocol. Petite fonction pour tester OWA -> usrProtocol
    	'DescList = objRecordSet.Fields("protocolSettings").Value
    	Desc = objRecordSet.Fields("protocolSettings").Value
    	'For Each Desc In DescList
    		i = InStr(1, Desc, "§", vbTextCompare)
    		If Left(Desc, i - 1) = "HTTP" Then
    			Desc = Right(Desc, Len(Desc) - i)
    				If Left(Desc, 1) = "1" Then
    					usrProtocol = "Activé"
    				Else
    					usrProtocol = ""
    				End If
    		End If
    	'Next
    	'Exchange, Option de Remise, Adresse de transfert
    	If IsEmpty(objRecordSet.Fields("altRecipient").Value) = False Then
    		usrFoward = ""
    	Else
    		usrFoward = objRecordSet.Fields("altRecipient").Value
    	End If
    	'Appel entrant, Autorisation d'acces distant
    	usrVPN = VPNconvert(objRecordSet.Fields("msNPAllowDialin").Value)
     
     
    Else 
    	'Aucun enregistrement
    	msgbox "La requete a renvoyée aucune donnée."
    End If
     
    msgbox usrname & usrmail & usrmobile & usrVPN & usrFoward
     
    '_________________________________________________________
    'Convertion de la valeur en  texte
    Function VPNconvert(VPN)
     
    	If VPN = "Vrai" Then
    		VPNconvert = "Autorisé"
    	ElseIf VPN = "Faux" Then
    		VPNconvert = "Refusé"
    	Else VPNconvert = "Selon stratégie"
    	End If
     
    End Function
     
    '_________________________________________________________
    'Convertion de la valeur décimale en donnée texte
    Function MobileConvert(Mobile)
     
    	If Mobile = 0 Then
    		MobileConvert = "OMA, Active Sync, DirectPush"
    	ElseIf Mobile = 1 Then
    		MobileConvert = "OMA, Active Sync"
    	ElseIf Mobile = 2 Then
    		MobileConvert = "Active Sync, DirectPush"
    	ElseIf Mobile = 3 Then
    		MobileConvert = "Active Sync"
    	ElseIf Mobile = 5 Then
    		MobileConvert = "OMA"
    	ElseIf Mobile = 7 Then
    		MobileConvert = "Aucun accès"
    	Else MobileConvert = "Introuvable"
    	End If
    End Function

  3. #3
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    1. Comment bien gerer des champs vides, j'ai vu IsEmpty(), mais comment l'optimiser dans mon code ?
    Tu te trompes sur le but de IsEmpty.
    Cette fonction sert à savoir si une variable a été initialisé.
    En fait plus précisément, elle cherche à savoir si une variable à la valeur Empty, qui est attribué automatiquement par l'interpréteur VBS à une variable avant son initialisation.

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Dim test
    If IsEmpty(test) Then
       wscript.echo "test est Empty, on l'initialise avec un nombre."
       test = 2
       'De ce fait, test qui était non typée jusqu'ici devient un int
       'et est initialisé à 2.
    End If
     
    'Le Not permet de négationner un test.
    'Ici IsEmpty renvois False, donc avec Not cela devient True et l'on rentre dans le If.
    'Sans le Not on serait rentré dans un Else s'il était présent.
    If Not IsEmpty(test) Then
       wscript.echo "test est initialisté, il n'est donc plus Empty."
    End If
    Pour le reste, ce n'est pas mon domaine de compétence l'AD, alors il faudra attendre que quelqu'un d'autre intervienne.

    Mais n'hésite pas à poster tes nouvelles version du script, je pourrais toujours voir les erreurs de syntaxe perso

    Edit :
    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
    '_________________________________________________________
    'Convertion de la valeur décimale en donnée texte
    Function MobileConvert(Mobile)
     
    	If Mobile = 0 Then
    		MobileConvert = "OMA, Active Sync, DirectPush"
    	ElseIf Mobile = 1 Then
    		MobileConvert = "OMA, Active Sync"
    	ElseIf Mobile = 2 Then
    		MobileConvert = "Active Sync, DirectPush"
    	ElseIf Mobile = 3 Then
    		MobileConvert = "Active Sync"
    	ElseIf Mobile = 5 Then
    		MobileConvert = "OMA"
    	ElseIf Mobile = 7 Then
    		MobileConvert = "Aucun accès"
    	Else MobileConvert = "Introuvable"
    	End If
    End Function
    J'utilise beaucoup le Else IF aussi, mais dans certain cas il est peut être plus approprié de faire des Select case.
    Mais bon ce code est quand même fonctionnelle.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Août 2005
    Messages
    52
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 52
    Par défaut Liste AD, owa, vpn...
    Bonjour et merci pour ta réponse,

    j'ai modifié le code entre temps :
    IsNull à la place d' IsEmpty

    A l'heure actuelle, le code fonctionne presque bien et remplit mon fichier texte.
    J'ai un petit soucis, c'est l'attribut description qui me genère des erreurs.
    Ensuite j'aimerais optimiser ce code, car je ne pense pas l'avoir ecrit de la meilleur facon.
    Merci d'avance pour tout les conseils...
    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
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
     
    	'Connexion a l'AD
    	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") = 2
     
    	'Definition de la requete : 
    	strSelect = "Name, Description, mail, msExchOmaAdminWirelessEnable, protocolSettings, altRecipient, msNPAllowDialin"
    	strFrom = "'LDAP://ou=utilisateurs,dc=MyDomain,dc=local'"
    	strWhere = "objectClass='user'"
    	strOrder = "Name ASC"
    	objCommand.CommandText = "SELECT " & strSelect & " FROM " & strFrom & " WHERE " & strWhere & " ORDER BY " & strOrder
     
    	'Création d'un recordset d'après la requete
    	Set objRecordSet = objCommand.Execute
     
    	'Si le recordset contient des enregistrements, alors...
    	If objRecordSet.RecordCount > 0 Then
     
    		'On se déplace sur la ligne 1ère ligne
    		objRecordSet.MoveFirst
     
    		'Tester l'existance du fichier avant d'ecrire dedant
    		Set FileSys = CreateObject("Scripting.FileSystemObject")
    		strFilePath = "c:\ad.txt"
    		If FileSys.FileExists (strFilePath) then
    			Msgbox "Le fichier existe, supprimer le et relancer le script."
    		Else
    			'Il n'existe pas, alors on le crée
    			Set MonFic = FileSys.CreateTextFile(strFilePath)
    			'On inscrit l'entete des colonnes
    			MonFic.writeLine "Nom;Description;Mail;Mobile;VPN;Transfert mail;OWA;"
    			'On le replit
    			While Not objRecordSet.EOF
    				'La focntion usrVar sert a mettre les données usr*** en forme
    				Call usrVar
    				'On ecrit dans le fichier
    				With MonFic
    					.writeLine usrname & usrDescript & usrmail & usrmobile & usrVPN & usrFoward & usrProtocol
    				End With
    				objRecordSet.MoveNext
    			Wend
    			objRecordset.Close
    			MonFic.Close
    			msgbox "Le fichier est créé dans " & strFilePath
    		End if
     
    	Else 
    		'Aucun enregistrement
    		msgbox "La requete a renvoyée aucune donnée."
    	End If
     
     
    '_________________________________________________________
    'Convertion des valeurs en  texte
    Function usrVar
    	' on inscrit les enregistrement non Null dans des variables...
    	'Nom
    	If IsNull(objRecordSet.Fields("Name").Value) = True Then
    		usrName = ";"
    	Else usrName = objRecordSet.Fields("Name").Value & ";"
    	End If
     
    	'Description
    	If IsNull(objRecordSet.Fields("Description").Value) = True Then
    		usrDescript = ";"
    	Else usrDescript = ";"'objRecordSet.Fields("Description").Value & ";"
    	End If
     
    	'mail
    	If IsNull(objRecordSet.Fields("mail").Value) = True Then 
    		usrMail = ";"
    	Else usrMail = objRecordSet.Fields("mail").Value & ";"
    	End If
     
    	'Fonctionnalité Exchange, Services mobiles -> usrMobile
    	usrMobile = MobileConvert(objRecordSet.Fields("msExchOmaAdminWirelessEnable").Value) & ";"
     
    	'Fonctionnalité Exchange, Protocol. Petite fonction pour tester OWA -> usrProtocol
    	If IsNull(objRecordSet.Fields("protocolSettings").Value) = True  Then
    		usrProtocol = "Activé;"
    	Else DescList = objRecordSet.Fields("protocolSettings").Value
    		For Each Desc In DescList
    			i = InStr(1, Desc, "§", vbTextCompare)
    			If Left(Desc, i - 1) = "HTTP" Then
    				Desc = Right(Desc, Len(Desc) - i)
    				If Left(Desc, 1) = "1" Then
    					usrProtocol = "Activé;"
    				Else
    					usrProtocol = "Désactivé;"
    				End If
    			End If
    		Next
    	End If
     
    	'Exchange, Option de Remise, Adresse de transfert
    	If IsEmpty(objRecordSet.Fields("altRecipient").Value) = False Then
    		usrFoward = ";"
    	Else
    		usrFoward = objRecordSet.Fields("altRecipient").Value & ";"
    	End If
    	'Appel entrant, Autorisation d'acces distant
    	usrVPN = VPNconvert(objRecordSet.Fields("msNPAllowDialin").Value) & ";"
     
    End Function			
     
    '_________________________________________________________
    'Convertion de la valeur en  texte
    Function VPNconvert(VPN)
     
    	If VPN = "Vrai" Then
    		VPNconvert = "Autorisé"
    	ElseIf VPN = "Faux" Then
    		VPNconvert = "Refusé"
    	Else VPNconvert = "Selon stratégie"
    	End If
     
    End Function
     
    '_________________________________________________________
    'Convertion de la valeur décimale en donnée texte
    Function MobileConvert(Mobile)
     
    	Select Case Mobile
    		Case 0 MobileConvert = "OMA, Active Sync, DirectPush"
    		Case 1 MobileConvert = "OMA, Active Sync"
    		Case 2 MobileConvert = "Active Sync, DirectPush"
    		Case 3 MobileConvert = "Active Sync"
    		Case 5 MobileConvert = "OMA"
    		Case 7 MobileConvert = "Aucun accès"
    		Case Else MobileConvert = "Introuvable"
    	End Select
     
    End Function

  5. #5
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Par défaut
    J'ai un petit soucis, c'est l'attribut description qui me genère des erreurs.
    C'est quoi ces erreurs ?

Discussions similaires

  1. List<Map<String, Object>> en List<User>
    Par scrutin dans le forum Collection et Stream
    Réponses: 1
    Dernier message: 14/12/2012, 19h06
  2. Export liste users AD via SQL sur Excel
    Par Feldunost dans le forum Développement
    Réponses: 41
    Dernier message: 07/05/2010, 16h55
  3. liste des users connectés à une base acces
    Par progima dans le forum Access
    Réponses: 2
    Dernier message: 07/11/2005, 16h45
  4. [C#]liste de choix dans une propriété d'un user control
    Par LeDeveloppeurDotNet dans le forum Windows Forms
    Réponses: 2
    Dernier message: 07/10/2005, 12h41
  5. [INDY][IRC]liste de users
    Par korbier dans le forum Web & réseau
    Réponses: 2
    Dernier message: 29/04/2003, 09h00

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