+ Répondre à la discussion
Affichage des résultats 1 à 4 sur 4
  1. #1
    Membre Expert

    Homme Profil pro
    Apprenti Ingénieur Réseaux & Systèmes
    Inscrit en
    juin 2012
    Messages
    640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 22
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Apprenti Ingénieur Réseaux & Systèmes
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : juin 2012
    Messages : 640
    Points : 1 651
    Points
    1 651

    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 :
    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 :
    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.

  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 :
    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 :
    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 Expert

    Homme Profil pro
    Apprenti Ingénieur Réseaux & Systèmes
    Inscrit en
    juin 2012
    Messages
    640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 22
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Apprenti Ingénieur Réseaux & Systèmes
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : juin 2012
    Messages : 640
    Points : 1 651
    Points
    1 651

    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

  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 :
    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 :
    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é ?

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •