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 :

Mappage Lecteur avec AD


Sujet :

VBScript

  1. #1
    Membre émérite

    Homme Profil pro
    Ingénieur Réseaux
    Inscrit en
    Juin 2012
    Messages
    877
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Réseaux
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2012
    Messages : 877
    Points : 2 427
    Points
    2 427
    Par défaut Mappage Lecteur avec AD
    Bonjour,

    Travaillant sur un autre script, la phase de test a échoué et je ne comprends pas trop.

    Je cherche à vérifier l'appartenance d'un utilisateur à un groupe AD et ainsi monter les lecteurs associés.
    Mon souci vient du fait que mon script monte tous les lecteurs à tout le monde ! Ceci est donc problématique ....

    Voici 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
    48
    49
    50
    51
    52
    53
    54
    55
    ON ERROR RESUME NEXT
     
    Dim UserName 
     
    set WshShell = CreateObject("WScript.Shell")
     
    Set WshNetwork = WScript.CreateObject("WScript.Network")
    UserName = WshNetwork.UserName
     
    DomainName="yy.com"
     
    LogonServer=WshShell.ExpandEnvironmentStrings("%LogonServer%")
     
    Set UserObj = GetObject("LDAP://" & DomainName & "/" & WshNetwork.UserName)
     
     
    Set WshProcessEnv = WshShell.Environment("PROCESS") 
     
     
     
     ' ***************  BOUCLE VERIFICATION GROUPE AD  **********************
     
     
     For Each GroupObj In UserObj.groups
     
                WshNetwork.MapNetworkDrive "P:" , WshProcessEnv("HOMESHARE")
                WshNetwork.MapNetworkDrive "Q:" , "\\chemin1"
    	        WshNetwork.MapNetworkDrive "S:" , "\\chemin2"
                WshNetwork.MapNetworkDrive "L:" , "\\chemin3"   
     
     	    If IsMember("Grp1") Then
     
               WshNetwork.MapNetworkDrive "K:" , "\\chemin4"
     
    	    End if
     
        	If IsMember("Grp2") Then
     
    	       WshNetwork.MapNetworkDrive "W:", "\\chemin5"
     
            End if
     
    	    If IsMember("Grp3") Then
     
    		   WshNetwork.MapNetworkDrive "R:", "\\chemin6"
     
    	    End If
     
    		If IsMember("Grp4") Then
     
    		   WshNetwork.MapNetworkDrive "M:", "\\chemin7"
     
    	    End If
     
    Next
    Pour IsMember, j'ai testé plusieurs choses :
    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
    'Function IsMember (strGroup)
     
    '    Set  WshNetwork = CreateObject ("WScript.Network")
    '    Set oGroup = GetObject ( _
    '        "WinNT://" & WshNetwork.UserDomain & "/" & strGroup)
    '    IsMember =  WshNetwork.IsMember ( _
    '        "WinNT://" &  WshNetwork.UserDomain & "/" & _
    '         WshNetwork.UserName)
    'End Function
     
    Function IsMember(sGroup)
    Dim sAdsPath,oUser,oGroup,g_oGroupDict,g_oNet 
      'Peupler dictionnaire si pas encore créé
      If IsEmpty(g_oGroupDict) Then
          Set g_oGroupDict=CreateObject("Scripting.Dictionary")
          g_oGroupDict.CompareMode = vbTextCompare
          sAdsPath = res.UserDomain &"/"& res.UserName
          Set oUser = GetObject("WinNT://"& sAdsPath & ",user")
          	For Each oGroup In oUser.Groups
            g_oGroupDict.Add oGroup.Name, "-"
          	Next
          Set oUser = Nothing
      End If
    IsMember = CBool(g_oGroupDict.Exists(sGroup))
    End Function
     
    'Function IsMember(strGroup) 
    'IsMember=False 
    'If InStr(UserGroups,"[" & strGroup & "]") Then 
    'IsMember=True 
    'End If 
    'End Function
    Mais hélas, rien ne marche.



    Merci,


    Miistik.
    Si la réponse vous a été donnée, pensez au Tag .
    Un petit aide à se sentir utile. Merci.

    "La folie. C'est de faire et refaire la même chose en espérant que le résultat sera différent."
    Albert Einstein

  2. #2
    Nouveau membre du Club
    Profil pro
    Technicien Help Desk
    Inscrit en
    Décembre 2012
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Décembre 2012
    Messages : 23
    Points : 29
    Points
    29
    Par défaut
    Essaie de remplacer la fonction IsMember par ceci ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Function IsMember(sGroup)
    	Dim sAdsPath,oUser,oGroup,GrpExists
    	sAdsPath = res.UserDomain &"/"& res.UserName
    	Set oUser = GetObject("WinNT://"& sAdsPath & ",user")
    	For Each oGroup In oUser.Groups
    		If oGroup.Name = sGroup Then GrpExists = 1
    	Next
    	Set oUser = Nothing
    	Set oGroup = Nothing
    	IsMember = GrpExists
    End Function
    En un paquet, ça donne :
    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
    ON ERROR RESUME NEXT
     
    Dim UserName
    set WshShell = CreateObject("WScript.Shell")
    Set WshNetwork = WScript.CreateObject("WScript.Network")
    UserName = WshNetwork.UserName
    DomainName="yy.com"
    LogonServer=WshShell.ExpandEnvironmentStrings("%LogonServer%")
    Set UserObj = GetObject("LDAP://" & DomainName & "/" & UserName)
    Set WshProcessEnv = WshShell.Environment("PROCESS")
     
     ' ***************  BOUCLE VERIFICATION GROUPE AD  **********************
     For Each GroupObj In UserObj.groups
    	WshNetwork.MapNetworkDrive "P:" , WshProcessEnv("HOMESHARE")
    	WshNetwork.MapNetworkDrive "Q:" , "\\chemin1"
    	WshNetwork.MapNetworkDrive "S:" , "\\chemin2"
    	WshNetwork.MapNetworkDrive "L:" , "\\chemin3"
     
    	If IsMember("Grp1") Then
    	   WshNetwork.MapNetworkDrive "K:" , "\\chemin4"
    	End if
     
    	If IsMember("Grp2") Then
    	   WshNetwork.MapNetworkDrive "W:", "\\chemin5"
    	End if
     
    	If IsMember("Grp3") Then
    	   WshNetwork.MapNetworkDrive "R:", "\\chemin6"
    	End If
     
    	If IsMember("Grp4") Then
    	   WshNetwork.MapNetworkDrive "M:", "\\chemin7"
    	End If
    Next
     
    'Function IsMember (strGroup)
     
    '    Set  WshNetwork = CreateObject ("WScript.Network")
    '    Set oGroup = GetObject ( _
    '        "WinNT://" & WshNetwork.UserDomain & "/" & strGroup)
    '    IsMember =  WshNetwork.IsMember ( _
    '        "WinNT://" &  WshNetwork.UserDomain & "/" & _
    '         WshNetwork.UserName)
    'End Function
     
    Function IsMember(sGroup)
    	Dim sAdsPath,oUser,oGroup,GrpExists
    	sAdsPath = res.UserDomain &"/"& res.UserName
    	Set oUser = GetObject("WinNT://"& sAdsPath & ",user")
    	For Each oGroup In oUser.Groups
    		If oGroup.Name = sGroup Then GrpExists = 1
    	Next
    	Set oUser = Nothing
    	Set oGroup = Nothing
    	IsMember = GrpExists
    End Function
     
    'Function IsMember(strGroup)
    'IsMember=False
    'If InStr(UserGroups,"[" & strGroup & "]") Then
    'IsMember=True
    'End If
    'End Function
    (Je n'ai pas de LDAP disponible pour faire d'essai fonctionnel.)

  3. #3
    Membre émérite

    Homme Profil pro
    Ingénieur Réseaux
    Inscrit en
    Juin 2012
    Messages
    877
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Réseaux
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2012
    Messages : 877
    Points : 2 427
    Points
    2 427
    Par défaut
    Bonjour Le Forum,

    @ Daynvheur : Je te remercie de ta réponse. je teste cela.

    Désolé pour la réponse tardive, j'étais en cours je ne pouvais tester.

    EDIT : Malheureusement, je monte encore tous les lecteurs réseaux. Je bloque vraiment sur cette fonction de lien avec l'AD. Merci de ton aide !

    Bien cordialement,

    Miistik
    Si la réponse vous a été donnée, pensez au Tag .
    Un petit aide à se sentir utile. Merci.

    "La folie. C'est de faire et refaire la même chose en espérant que le résultat sera différent."
    Albert Einstein

  4. #4
    Nouveau membre du Club
    Profil pro
    Technicien Help Desk
    Inscrit en
    Décembre 2012
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Décembre 2012
    Messages : 23
    Points : 29
    Points
    29
    Par défaut
    Hmm, la gestion de l'utilisateur dans la fonction IsMember me semble étrange...

    Essai avec ceci ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Function IsMember(sDomainUser, sGroup) 'IsMember("yy.com/user", "Grp1")
    	Dim oUser,oGroup,GrpExists
    	Set oUser = GetObject("WinNT://"& sDomainUser & ",user")
    	For Each oGroup In oUser.Groups
    		If oGroup.Name = sGroup Then GrpExists = 1
    	Next
    	Set oUser = Nothing
    	Set oGroup = Nothing
    	IsMember = GrpExists
    End Function
    Ce qui donne pour l'ensemble :
    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
    ON ERROR RESUME NEXT
     
    Dim UserName
    set WshShell = CreateObject("WScript.Shell")
    Set WshNetwork = WScript.CreateObject("WScript.Network")
    UserName = WshNetwork.UserName
    DomainName="yy.com"
    LogonServer=WshShell.ExpandEnvironmentStrings("%LogonServer%")
    Set UserObj = GetObject("LDAP://" & DomainName & "/" & UserName)
    Set WshProcessEnv = WshShell.Environment("PROCESS")
     
     ' ***************  BOUCLE VERIFICATION GROUPE AD  **********************
     For Each GroupObj In UserObj.groups
    	WshNetwork.MapNetworkDrive "P:" , WshProcessEnv("HOMESHARE")
    	WshNetwork.MapNetworkDrive "Q:" , "\\chemin1"
    	WshNetwork.MapNetworkDrive "S:" , "\\chemin2"
    	WshNetwork.MapNetworkDrive "L:" , "\\chemin3"
     
    	If IsMember(DomainName&"/"&UserName, "Grp1") Then
    	   WshNetwork.MapNetworkDrive "K:" , "\\chemin4"
    	End if
     
    	If IsMember(DomainName&"/"&UserName, "Grp2") Then
    	   WshNetwork.MapNetworkDrive "W:", "\\chemin5"
    	End if
     
    	If IsMember(DomainName&"/"&UserName, "Grp3") Then
    	   WshNetwork.MapNetworkDrive "R:", "\\chemin6"
    	End If
     
    	If IsMember(DomainName&"/"&UserName, "Grp4") Then
    	   WshNetwork.MapNetworkDrive "M:", "\\chemin7"
    	End If
    Next
     
    'Function IsMember (strGroup)
     
    '    Set  WshNetwork = CreateObject ("WScript.Network")
    '    Set oGroup = GetObject ( _
    '        "WinNT://" & WshNetwork.UserDomain & "/" & strGroup)
    '    IsMember =  WshNetwork.IsMember ( _
    '        "WinNT://" &  WshNetwork.UserDomain & "/" & _
    '         WshNetwork.UserName)
    'End Function
     
    Function IsMember(sDomainUser, sGroup) 'IsMember("yy.com/user", "Grp1")
    	Dim oUser,oGroup,GrpExists
    	Set oUser = GetObject("WinNT://"& sDomainUser & ",user")
    	For Each oGroup In oUser.Groups
    		If oGroup.Name = sGroup Then GrpExists = 1
    	Next
    	Set oUser = Nothing
    	Set oGroup = Nothing
    	IsMember = GrpExists
    End Function
     
    'Function IsMember(strGroup)
    'IsMember=False
    'If InStr(UserGroups,"[" & strGroup & "]") Then
    'IsMember=True
    'End If
    'End Function
    Sinon, que donne un test basique, type If IsMember("DomainName/UserName", "Grp3") Then WScript.Echo "Oui, "&DomainName&"/"&UserName&" fait bien partie de ce groupe.", , "Grp3" ?

    Nota : est-ce vraiment domain/user à utiliser, ou domain\user ne serait-il pas mieux indiqué ?

Discussions similaires

  1. Mappage lecteur réseau avec login et password
    Par _gor_acc dans le forum VBScript
    Réponses: 1
    Dernier message: 13/10/2010, 20h33
  2. mappage lecteur réseau + imprimante + copie fichier
    Par jawad-kun dans le forum Général Dotnet
    Réponses: 0
    Dernier message: 10/08/2009, 19h40
  3. Mappage objet avec flux XML
    Par REMACC1 dans le forum C#
    Réponses: 0
    Dernier message: 04/08/2009, 16h39
  4. Mappage lecteurs réseaux selon groupe
    Par cikky dans le forum VBScript
    Réponses: 9
    Dernier message: 27/11/2008, 13h16
  5. [XML] mappage possible avec quelle version?
    Par didier.cabale dans le forum Excel
    Réponses: 5
    Dernier message: 06/05/2007, 15h42

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