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 :

copier fichier via un groupe AD pour des ordinateurs ciblé


Sujet :

VBScript

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Juillet 2010
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 2
    Points : 1
    Points
    1
    Par défaut copier fichier via un groupe AD pour des ordinateurs ciblé
    Bonjour à tous,
    Je suis un débutant en vbs et j'aimerai faire un script pour copier un raccourcis .rdp sur des ordinateurs spécifique qui sont membre d'un groupe AD spécifique.

    Est-ce que vous pouvez m'aidez ?

    Merci !

  2. #2
    Nouveau membre du Club
    Inscrit en
    Décembre 2007
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 42
    Points : 35
    Points
    35
    Par défaut
    ce code te permettra d'avoir la liste de tes ordis dans un groupe.
    pense à mettre la variable StrContainer à jour pour qu'il puisse aller chercher tes groupes dans la bonne OU.
    Les ordis sont mis dans la variable list et est inscrit dans un fichier (tu peux spécifier l'endroit.

    Il ne te manque plus qu'à parcourir ce fichier avec un boucle pour lire le nom de tes ordis et executer ton code pour y mettre un raccourci.


    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
     
    Option Explicit
    'inclus les groupes imbriqués
    Dim StrContainer , StrGrp
    Dim objGroup, strDN, objMemberList
    Dim adoConnection, adoCommand, objRootDSE, strDNSDomain
    Dim FSO,Fichier, StrList
    Const Lire = 1, Ecrire = 2, Ajouter = 8
     
    ' Dictionary object to track group membership.
    Set objMemberList = CreateObject("Scripting.Dictionary")
    objMemberList.CompareMode = vbTextCompare
    Set FSO = Wscript.CreateObject("Scripting.FileSystemObject")
     
     
     
    StrContainer = "OU=Utilisateurs du domaine"
    Reorganisation,OU=GROUPES,OU=TGITOULOUSE,OU=Ressort Cour d'appel de Toulouse"
    StrDN = InputBox("Veuillez entrer le nom du groupe" & VbCrlf & "dont vous voulez les membres","Lister les utilisateurs de groupe by JB entreprise")
     
     
    ' Se connecter sur le groupe
    Set objRootDSE = GetObject("LDAP://RootDSE")
    StrDNSDomain = objRootDSE.Get("defaultNamingContext")
    On Error Resume Next
    Set ObjGroup = GetObject("LDAP://CN=" & StrDN & "," & strContainer & "," & StrDNSDomain)
    If (Err.Number <> 0) Then
        On Error GoTo 0
        Wscript.Echo "Groupe non trouvé" & vbCrLf & strDN
        Wscript.Quit(1)
    End If
    On Error GoTo 0
     
    ' Setup ADO.
    Set adoConnection = CreateObject("ADODB.Connection")
    Set adoCommand = CreateObject("ADODB.Command")
    adoConnection.Provider = "ADsDSOObject"
    adoConnection.Open "Active Directory Provider"
    Set adoCommand.ActiveConnection = adoConnection
    adoCommand.Properties("Page Size") = 100
    adoCommand.Properties("Timeout") = 30
    adoCommand.Properties("Cache Results") = False
     
    ' Enumerer les membres du groupe
    Call EnumGroup(objGroup, "")
     
     
    set Fichier=FSO.OpenTextFile("Liste-ressource.txt",Ajouter,true)
    Fichier.WriteLine "********************" & VbCrlf & "Les membres de " & StrDN & " sont :" & vbCrlf & VbCrlf & "********************" & VbCrlf & Vbcrlf & VbCrlf & StrList
    Fichier.Close
     
    adoConnection.Close
    Set objGroup = Nothing
    Set objRootDSE = Nothing
    Set adoCommand = Nothing
    Set adoConnection = Nothing
     
     
    '#################################################################################
    Sub EnumGroup(ByVal objADGroup, ByVal strOffset)
        Dim strFilter, strAttributes, adoRecordset, intGroupToken
        Dim objMember, strQuery, strNTName,Nomposte
     
        ' Retrieve "primaryGroupToken" of group.
        objADGroup.GetInfoEx Array("primaryGroupToken"), 0
        intGroupToken = objADGroup.Get("primaryGroupToken")
     
        strFilter = "(primaryGroupID=" & intGroupToken & ")"
        strAttributes = "sAMAccountName"
        strQuery = "<LDAP://" & strDNSDomain & ">;" & strFilter & ";" & strAttributes & ";subtree"
        adoCommand.CommandText = strQuery
        Set adoRecordset = adoCommand.Execute
        Do Until adoRecordset.EOF
            strNTName = adoRecordset.Fields("sAMAccountName").Value
            If (objMemberList.Exists(strNTName) = False) Then
                objMemberList.Add strNTName, True
                StrList = StrList & strOffset & strNTName & " (Primary)" & VbCrlf
            Else
                StrList = StrList & strOffset & strNTName & " (Primary, Duplicate)" & Vbcrlf
            End If
            adoRecordset.MoveNext
        Loop
        adoRecordset.Close
     
        For Each objMember In objADGroup.Members
            If (objMemberList.Exists(objMember.sAMAccountName) = False) Then
                objMemberList.Add objMember.sAMAccountName, True
                If (UCase(Left(objMember.objectCategory, 8)) = "CN=GROUP") Then
                    StrList = Strlist & VbCrlf & StrOffset & "-----------------------" & VbCrlf & strOffset & objMember.sAMAccountName & " (Groupe)" & VbCrlf
                    Call EnumGroup(objMember, strOffset & strOffset & strOffset)
                Else
    				Nomposte=objMember.sAMAccountName
    				If instr(1,nomposte,"$") Then
    					nomposte=replace(nomposte,"$"," ")
    				End If	
                    StrList = StrList & strOffset & nomposte & VbCrlf
                End If
            Else
                StrList = Strlist & strOffset & objMember.sAMAccountName & " (Ce compte existe deja dans un autre groupe.)" & VbCrlf
            End If
        Next
        Set objMember = Nothing
        Set adoRecordset = Nothing
    End Sub
    J'avais mis un post sur ce forum : ICI

    J'avais demandé à ce qu'il soit dans les contributions mais peut être que ce script n'est pas à la hauteur, vu que je ne suis qu'un autodidacte.

    3 facons de parcourir l'ad (WinNT,LDAP,ADO)

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Juillet 2010
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    ou est-ce que je doit ajouté ma ligne de commande

  4. #4
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 415
    Points : 5 805
    Points
    5 805
    Par défaut
    J'avais demandé à ce qu'il soit dans les contributions mais peut être que ce script n'est pas à la hauteur, vu que je ne suis qu'un autodidacte.
    Je ne pense pas que ce soit la raison(je suis aussi autodidacte et j'ai pu poster des contributions pour VB6 et VBA).
    Tu peux alors poster ta contribution dans la page appropriée(Pour VBS : VbScript et juste à gauche en haut de la page tu cliques sur le bouton Nouvelle discussion.
    Ensuite tu remplis les champs nécessaires.
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

  5. #5
    Nouveau membre du Club
    Inscrit en
    Décembre 2007
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 42
    Points : 35
    Points
    35
    Par défaut
    Ha ben merci je viens de le faire

Discussions similaires

  1. copier les lignes ayant un critère vers des feuilles cibles
    Par arctica dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 30/09/2009, 13h48
  2. makefile pour des fichiers lex et yacc
    Par samarensi dans le forum Linux
    Réponses: 1
    Dernier message: 25/12/2006, 09h27
  3. Faire un fichier de configuration pour des scripts
    Par gene69 dans le forum Shell et commandes GNU
    Réponses: 9
    Dernier message: 23/06/2006, 23h59
  4. script windows pour copier fichier
    Par sacan dans le forum Windows
    Réponses: 3
    Dernier message: 09/06/2006, 12h24
  5. Uploader des fichiers via ssh
    Par Michaël dans le forum Réseau
    Réponses: 3
    Dernier message: 13/05/2005, 20h47

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