Help script wsh map lecteur réseau et groupe - Infrastructures serveurs - Systèmes & Réseaux Pro
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
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
Marsh Posté le 05-04-2008 à 03:43:52
tu as la commande ifmember du kit de ressources pour admin MS
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
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
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. |
Google = http://support.microsoft.com/kb/927229/fr
C'est simple. Autant l'utiliser
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
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 : |
avec au debut de ton script
Citation : Set WSHNetwork = WScript.CreateObject("WScript.Network" ) |
Sinon tu peux effectivement utiliser IFMEMBER! C'est donc autre chose.
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-
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
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++
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!
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-
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. |
|
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 ^^
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.