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 :

éditer les propriétés LCS d'un utilisateur de l'AD par script


Sujet :

VBScript

  1. #1
    Futur Membre du Club
    Inscrit en
    Mai 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 9
    Points : 7
    Points
    7
    Par défaut éditer les propriétés LCS d'un utilisateur de l'AD par script
    Bonjour à tous ami(e)s programmeurs, j'ai mis en place un serveur LCS 2005 (equivaut à un serveur de présence) et maintenant je voudrais éditer les propriétés LCS de chacun de mes utilisateurs de mon Active Directory, le problème est qu'il y a environ 200 utilisateurs c'est pourquoi je m'adresse à vous dans le but de pouvoir répondre à ma requête.

    la propriété Lcs d'un utilisateur doit permettre de cocher une case sous la forme d'un booléen ainsi qu'une zone de texte permettant de renseigner le nom du serveur lcs concerner en l'occurrence ici lcs2005.local.com

    merci de pouvoir m'aider.

    voici mon programme :
    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
    Dim u,oConnection,oRecordset
     
    ' Connexion de type base de donnée à Active Directory
     
    Set oConnection = CreateObject("ADODB.Connection")
    oConnection.Provider = "ADsDSOObject"
    oConnection.Open "ADs Provider"
     
    ' Définition de la recherche principale
     
    Set oRecordset = oConnection.Execute("<LDAP://OU=agence,DC=Local,DC=com>;(&(objectCategory=user));samaccountname,mail,distinguishedName;subtree")
     
     
    ' Boucle sur les enregistrements
     
    If Not oRecordset.EOF Then
     
        While Not oRecordset.EOF
     
          currentuser=oRecordset.Fields("sAMAccountName")
     
          If (isnull(oRecordset.Fields("mail"))) then
     
                u=u+1
                Dim oUser
                set oUser= GetObject("LDAP://"+oRecordset.Fields("distinguishedName"))
     
                            'Distinctin bureaux - agences
     
                             if mid(currentuser,1,2) = "b-" then
                                       mail =  mid(currentuser,3,len(currentuser)-2) & "@local.com"
                             else
                                       mail =  currentuser & "@local.com" 
     
    			 end if	
                'Mise à jour du champ Mail
                oUser.put "Mail", Mail
                oUser.setinfo
     
          End if
     
          oRecordset.movenext
     
        wend
     
    End If
     
    wscript.echo "Enregistrement terminé !"
    wscript.quit

    il fonctionne correctement mais je voudrais rajouter le code me permettant de coser une case et nommer dans une zone de texte le nom du serveur LCS.

  2. #2
    Rédacteur
    Avatar de omen999
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 296
    Points : 3 549
    Points
    3 549
    Par défaut
    salut,
    vbs ne dispose pas nativement d'une interface graphique qui permettrait à l'utilisateur de manipuler des cases à cocher
    il existe juste la fonction inputbox qui permet de saisir du texte de façon rudimentaire
    l'ajout d'une gui suppose le recours à un composant activex comme celui-ci: http://home.hccnet.nl/p.vd.klugt/
    ou si tu es très courageux, ici: http://www.developpez.net/forums/sho...d.php?t=276403
    nomen omen, nemo non omen - Consultez la FAQ VBScript et les cours et tutoriels VBScript
    le plus terrible lorsqu'une voiture renverse un piéton, c'est que ce sont les freins qui hurlent. (ramón)
    pas de questions techniques par mp

  3. #3
    Futur Membre du Club
    Inscrit en
    Mai 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    je ne veux pas créer de case à cocher je veux juste cocher la case qui permet justement d'activer les propriétés LCS d'un utilisateur mais par script.

    Lorsque tu te positionne sur un user et que tu effectues un clic droit ensuite propriétés et là il fo aller dans les propriétés LCS de l'utilisateur et cocher la case correspondante et remplir le champ nécessaire, c'est tout ce que je demande.

  4. #4
    Rédacteur
    Avatar de omen999
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 296
    Points : 3 549
    Points
    3 549
    Par défaut
    tu trouveras peut-être une réponse dans le sdk: http://www.microsoft.com/downloads/d...displaylang=en
    il contient des exemples de script wsf

    ici également: http://www.activedir.org/article.aspx?aid=118
    nomen omen, nemo non omen - Consultez la FAQ VBScript et les cours et tutoriels VBScript
    le plus terrible lorsqu'une voiture renverse un piéton, c'est que ce sont les freins qui hurlent. (ramón)
    pas de questions techniques par mp

  5. #5
    Futur Membre du Club
    Inscrit en
    Mai 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    oki merci pour ton aide et ta recherche c'est exactement ce que je dois faire mais le script parait vraiment compliqué si jamais tu connais, je voudrais bien un peu d'aide,

  6. #6
    Futur Membre du Club
    Inscrit en
    Mai 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 9
    Points : 7
    Points
    7
    Par défaut script
    Voici le script que j'ai crée mais celui-ci ne fonctionne pas, est-ce que quelqu'un pourrait m'apporter son aide???? svp

    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
    dim oConnection,oRecordset
     
    ' Connexion de type base de donnée à Active Directory
     
    Set oConnection = CreateObject("ADODB.Connection")
    oConnection.Provider = "ADsDSOObject"
    oConnection.Open "ADs Provider"
     
    ' Définition de la recherche principale
     
    Set oRecordset = oConnection.Execute("<LDAP://OU=agence,DC=Local,DC=com>;(&(objectCategory=user));sAMAccountName,mail,distinguishedName,msRTCSIP-UserEnabled,msRTCSIP-PrimaryHomeServer;subtree")
     
     
    ' Boucle sur les enregistrements
     
    If Not oRecordset.EOF Then
     
        While Not oRecordset.EOF
     
          currentuser=oRecordset.Fields("sAMAccountName")			
     
          If (isnull(oRecordset.Fields("mail"))) then
     
                'u=u+1
                Dim oUser
                set oUser= GetObject("LDAP://"+oRecordset.Fields ("distinguishedName"))	
     
                            'Distinctin bureaux - agences
     
                             if mid(currentuser,1,2) = "b-" then
     
                                       mail =  mid(currentuser,3,len(currentuser)-2) & "@local.com"
                             else
                                       mail =  currentuser & "@local.com" 
     
    			 end if 
     
     					If (isnull(oRecordset.Fields("msRTCSIP-UserEnabled"))) then 'permet de d'activer la case à cocher dans les propriétés lcs d'un user.
     
    						'UserEnabled = TRUE 			
     
    					End if
    						PrimaryHomeServer = "LCS2005.local.com"		'renseigne juste apres la case à cocher le nom du serveur LCS actuel.
     
    						Wscript.echo("msRTCSIP-PrimaryHomeServer")
     
     
                'Mise à jour du champ Mail et LCS
     
     
     
    	oUser.put "Mail", Mail 
    	oUser.put "msRTCSIP-UserEnabled", msRTCSIP-UserEnabled
    	oUser.put "PrimaryHomeServer",PrimaryHomeServer
    	oUser.SetInfo 
     
     
          End if			
     
          oRecordset.movenext  
     
        wend
     
    End If
     
    wscript.echo "Enregistrement terminé !"
    wscript.quit

    un message d'erreur apparait lors de l'enregistrement des nouveaux champs:
    ligne 55, code 8007200B, erreur : la syntaxe d'attribut spécifiée au service d'annuaire n'est pas valide.

  7. #7
    Membre habitué
    Inscrit en
    Juin 2005
    Messages
    275
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 275
    Points : 186
    Points
    186
    Par défaut
    Je n'ai pas la réponse exacte au problème, mais d'après moi ça plante sur la mise à jour des infos à cause de cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    oUser.put "msRTCSIP-UserEnabled", msRTCSIP-UserEnabled
    Je ne vois pas où tu instancie ta variable à mettre à jour...
    Mail est instancié après ta distinction entre bureaux et agences, PrimaryHomeServer est instancié à "LCS2005.local.com" pour tous tes enregistrement, mais msRTCSIP-UserEnabled ?....

    Tu rcupérais avant UserEnabled, qui me parait être ce qu'il te faut, mais il est maintenant commenté, et surtout ta variable est nommée différemment selon l'endroit.

    Un coup msRTCSIP-UserEnabled et un autre UserEnabled
    abertaud
    ---------

    - pas de réponse technique en PV, utilisez les forums
    - si vous trouvez seuls la solution, n'abandonnez pas votre post, mettez-le à jour pour les autres
    - le tag est parfois en voie d'extinction, participez à sa survie

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

Discussions similaires

  1. [LibreOffice] Remplir les champs de "données d'utilisateurs" à l'aide d'un script/macro
    Par Monoleet dans le forum OpenOffice & LibreOffice
    Réponses: 8
    Dernier message: 01/12/2014, 15h44
  2. Réponses: 2
    Dernier message: 22/04/2011, 00h34
  3. Réponses: 6
    Dernier message: 04/06/2008, 17h21
  4. Réponses: 4
    Dernier message: 06/03/2007, 12h54
  5. Réponses: 2
    Dernier message: 20/04/2006, 14h05

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