Help script wsh map lecteur réseau et groupe

Help script wsh map lecteur réseau et groupe - Infrastructures serveurs - Systèmes & Réseaux Pro

Marsh Posté le 04-04-2008 à 17:15:35    

Hi everyone ^^
 
j'ai une petite question technique qui je l'espère sera résolu grâce à vous. Voila je me lance.  
 
(Je viens de débuter)
(Je sais déja mapper un lecteur réseau...)
 
Je n'ai pas encore trouvé comment récupérer un groupe pour mette en place ceci :
 
J'ai deux équipes appartenant chacun à un groupe global.
Ex: l'user John appartient  au groupe Equipe 1
    l'user Tai appartient au groupe Equipe 2
 
Je veux que selon l'appartenance à un groupe le script map tel lecteur réseau.
Ex: si l'user est du groupe Equipe 1 mapper le lecteur réseau X
     sinon (appartient alors à l'quipe2) mapper le lecteur Y
 
Auriez vous des idées?
 
thanks a lot pour votre aide.
 

Reply

Marsh Posté le 04-04-2008 à 17:15:35   

Reply

Marsh Posté le 04-04-2008 à 19:23:59    

Tu veux faire ça en vbscript ?

Reply

Marsh Posté le 04-04-2008 à 20:52:47    

bah si wsh=vbscript surement ça ressemble à ça :
Dim lecteur
Set lecteur= CreateObject("Wscript.Network" )
lecteur.MapNetworkDrive "V:","\\seifer\VPC\Equipe1\partage"
lecteur.MapNetworkDrive "T:","\\seifer\VPC\commun"
WScript.Quit
 
Cordialement

Reply

Marsh Posté le 05-04-2008 à 00:30:28    

Ca donnera un truc dans le genre:
 
Set NetworkDisk = WScript.CreateObject("WScript.Network" )
 
If IsMember ("Equipe 1" ) Then
        NetworkDisk.MapNetworkDrive "V:", "\\seifer\VPC\Equipe1\partage"
        NetworkDisk.MapNetworkDrive "T:", "\\seifer\VPC\commun"
End If
 
If IsMember ("Equipe 2" ) Then
        NetworkDisk.MapNetworkDrive "V:", "\\seifer\VPC\Equipe2\partage"
        NetworkDisk.MapNetworkDrive "T:", "\\seifer\VPC\commun"
End If


Message édité par tayn le 05-04-2008 à 00:31:03
Reply

Marsh Posté le 05-04-2008 à 03:43:52    

tu as la commande ifmember du kit de ressources pour admin MS

Reply

Marsh Posté le 05-04-2008 à 12:09:18    

Thanks vous deux pour l'aide ^^ Sinon je ne sais pas ce qu'est le kit de ressources pour admin MS. Je fais ça sous un server 2003.
 
Jvais test et je vous tiens au courant

Reply

Marsh Posté le 05-04-2008 à 12:11:51    

un ami m'a passé ce code mais il ne marche pas completement.
 
Const GROUP1     = "cn=compta"  
Const GROUP2         = "cn=finance"  
Const GROUP3 = "cn=secretariat"
 
Set wshNetwork = CreateObject("WScript.Network" ) wshNetwork.MapNetworkDrive "h:", "\\FileServer\Users\" & wshNetwork.UserName
 
Set ADSysInfo = CreateObject("ADSystemInfo" )  
Set CurrentUser = GetObject("LDAP://" & ADSysInfo.UserName) strGroups = LCase(Join(CurrentUser.MemberOf))
 
If InStr(strGroups, GROUP1) Then
 
 wshNetwork.MapNetworkDrive "g:", "\\FileServer\compta\"  
 
else
blabla pour le groupe 2

Reply

Marsh Posté le 05-04-2008 à 12:16:51    

Tai91 a écrit :

Thanks vous deux pour l'aide ^^ Sinon je ne sais pas ce qu'est le kit de ressources pour admin MS. Je fais ça sous un server 2003.
 
Jvais test et je vous tiens au courant


 
 
Google = http://support.microsoft.com/kb/927229/fr
 
C'est simple. Autant l'utiliser ;)

Reply

Marsh Posté le 05-04-2008 à 14:20:05    

ShonGail j'ai installé le kit ifmember depuis la page microsoft que tu m'as donné (thanks) et j'ai fait ce ce script :
Dim lecteur
 
Set lecteur = WScript.CreateObject("WScript.Network" )
 
If IsMember ("Equipe 1" ) Then
 lecteur.MapNetworkDrive "h:", "\\seifer\VPC\Equipe1\" & lecteur.UserName
        lecteur.MapNetworkDrive "V:", "\\seifer\VPC\Equipe1\partage"
        lecteur.MapNetworkDrive "T:", "\\seifer\VPC\commun"
End If
 
If IsMember ("Equipe 2" ) Then
 lecteur.MapNetworkDrive "h:", "\\seifer\VPC\Equipe1\" & lecteur.UserName
        lecteur.MapNetworkDrive "V:", "\\seifer\VPC\Equipe2\partage"
        lecteur.MapNetworkDrive "T:", "\\seifer\VPC\commun"
End If
 
WScript.Quit
 
Le problème est que j'ai une erreur vbs :type imcompatible "ifmember" lors du login de de l'un de mes users.
 
Ai-je oublié quelque chose d'important?
 
Cordialement

Reply

Marsh Posté le 05-04-2008 à 15:05:16    

oups excuse moi j'ai oublié de te fournir la fonction ISMEMBER!
 
Pour le ressource kit c'est autre chose c'est IFMEMBER
 
Dans mon cas tu n'as besoin de rien téléchargé.
 
Donc dans ton script il faut que tu ajoutes a la fin la fonction ISMEMBER qui est:

Citation :


 
Function IsMember(sGroup)
Dim ADsPath, oUser, oGroup
 
If IsEmpty(GroupDict) Then
 Set GroupDict = CreateObject("Scripting.Dictionary" )
 GroupDict.CompareMode = vbTextCompare
 ADsPath = WSHNetwork.UserDomain & "/" & WSHNetwork.UserName
 Set oUser = GetObject("WinNT://" & ADsPath & ",user" )
 For Each oGroup in oUser.Groups
  GroupDict.Add oGroup.Name, "-"
 Next
 Set oUser = Nothing
End If
Ismember = CBool(GroupDict.Exists(sGroup))
 
End Function


 
avec au debut de ton script
 

Citation :

Set WSHNetwork = WScript.CreateObject("WScript.Network" )


 
Sinon tu peux effectivement utiliser IFMEMBER! C'est donc autre chose.


Message édité par tayn le 05-04-2008 à 15:16:18
Reply

Marsh Posté le 05-04-2008 à 15:05:16   

Reply

Marsh Posté le 05-04-2008 à 15:11:31    

Thanks tayn jv test de suite. Tu pourrais si ta le temps me décrire chaque ligne de ta fonction. C'est histoire d'expliquer au jury ce que ça fait pas à pas ^^
 
-Tai-

Reply

Marsh Posté le 05-04-2008 à 15:17:12    

J'ai du bug quelque part car j'ai plus de message d'erreur mais rien n'est mapper snif ^^
Voici mon code :  
Set WSHNetwork = WScript.CreateObject("WScript.Network" )  
 
Dim lecteur
 
Set lecteur = WScript.CreateObject("WScript.Network" )
 
If IsMember ("Equipe 1" ) Then
 lecteur.MapNetworkDrive "h:", "\\seifer\VPC\Equipe1\" & lecteur.UserName
        lecteur.MapNetworkDrive "V:", "\\seifer\VPC\Equipe1\partage"
        lecteur.MapNetworkDrive "T:", "\\seifer\VPC\commun"
End If
 
If IsMember ("Equipe 2" ) Then
 lecteur.MapNetworkDrive "h:", "\\seifer\VPC\Equipe1\" & lecteur.UserName
        lecteur.MapNetworkDrive "V:", "\\seifer\VPC\Equipe2\partage"
        lecteur.MapNetworkDrive "T:", "\\seifer\VPC\commun"
End If
 
WScript.Quit
 
 
 
Function IsMember(sGroup)
Dim ADsPath, oUser, oGroup
 
If IsEmpty(GroupDict) Then
 Set GroupDict = CreateObject("Scripting.Dictionary" )
 GroupDict.CompareMode = vbTextCompare
 ADsPath = WSHNetwork.UserDomain & "/" & WSHNetwork.UserName
 Set oUser = GetObject("WinNT://" & ADsPath & ",user" )
 For Each oGroup in oUser.Groups
  GroupDict.Add oGroup.Name, "-"
 Next
 Set oUser = Nothing
End If
Ismember = CBool(GroupDict.Exists(sGroup))
 
End Function

Reply

Marsh Posté le 05-04-2008 à 15:24:35    

Function IsMember(sGroup) ==> INITIALISE FONCTION
[/b][/b]Dim ADsPath, oUser, oGroup ==> INITIALISE VARIABLE
 
If IsEmpty(GroupDict) Then ==> SI GROUPDICT est vide alors on lance ce qui va suivre pour l'initialisé
 Set GroupDict = CreateObject("Scripting.Dictionary" ) => On initialise un object scripting.dictionnary
 GroupDict.CompareMode = vbTextCompare ==> Le mode de comparaison (pour la suite pour déterminer les groupes) est un mode "texte"
 ADsPath = WSHNetwork.UserDomain & "/" & WSHNetwork.UserName ==> On recupere le chemin AD en assemblant le domaine du user + le nom (ca donnera un truc du genre "INTRANET/TOTO"
 Set oUser = GetObject("WinNT://" & ADsPath & ",user" ) ==> On initialise la variable oUser sur ce chemin utilisateur AD
 For Each oGroup in oUser.Groups ==> Pour chaque groupe donc appartient l'utilisateur TOTO
  GroupDict.Add oGroup.Name, "-" ==> On ajoute dans la variable (tableau en fait) "GROUPDICT" le nom du groupe + un tiret.
 Next ==> Boucle
 Set oUser = Nothing ==> réinitilisateur de oUser pour faire ca propre
End If
Ismember = CBool(GroupDict.Exists(sGroup)) ==> On vérifie dans le tableau GROUPDICT si par exemple "EQUIPE 2" est dans les groupes de l'utilisateur. (par rapport au remplissage du tableau au dessus FOR / NEXT), et on retourne TRUE ou FALSE en fonction du résultat.
End Function
 
A++

Reply

Marsh Posté le 05-04-2008 à 15:27:52    

Si ca marche pas essaye de faire des "wscript.echo" de tes variables un peu partout pour voir ou ca merde.
 
Par exemple tu fait :
 
For Each oGroup in oUser.Groups
    GroupDict.Add oGroup.Name, "-"
   wscript.echo oGroup.Name
Next  
 
Toute facon essayes de comprendre le code et t'arriveras a comprendre d'ou vient ton problème! Sinon utilises IFMEMBER! :)

Reply

Marsh Posté le 05-04-2008 à 15:30:00    

big thanks a toi tayn pour cette aide. jvais me penché la dessus. sinon pour IFmember voit pas comment ça marche dans un script mais c'est une autre histoire.
Bon jrepars faire mes tests ^^
 
-Tai-

Reply

Marsh Posté le 05-04-2008 à 16:12:51    

Tai91 a écrit :

big thanks a toi tayn pour cette aide. jvais me penché la dessus. sinon pour IFmember voit pas comment ça marche dans un script mais c'est une autre histoire.
Bon jrepars faire mes tests ^^
 
-Tai-


 
 


echo off
cls
ifmember administrateurs
if not errorlevel 1 goto negatif
echo * Membre du groupe admininistrateurs local *
pause
exit
:negatif
echo * Pas membre du groupe admininistrateurs local *
pause
exit

Reply

Marsh Posté le 06-04-2008 à 14:47:39    

yo ^^ grace au echo j'ai bien vu ou t'es les erreurs et ça marche du tonnerre tayn. jte le redis encore 'big thanks'.
 
ptite question si quelque passe encore par la:  
 
Peut on renommer par un nom à nous le lecteur réseau mapper directement dans le script?
Peut on créer un repertoire perso d'un user et le mapper par la suite par script?
(l'équivalent de connecter un "dossier de base" dans l'onglet profil d'un user. En effet celui ci va créer de lui même un dossier perso et le mapper. )
 
Cordialement et nice week ^^

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed