OVH Cloud OVH Cloud

VBScript - 800A000D Typemismatch 'join' avec un utilisateur standard

4 réponses
Avatar
Glenn Gagné
J'ai trouvé des exemples de scripts pour des ouvertures de session en
VBScript.

dans l'exemple je pouvais me connecter à des lecteurs réseaux tout
dépendant si je fais parti ou non d'un groupe X.

Mais la méthode utilise la commande "join"... le problème d'après les infos
trouvés c'est que la commande "join" ne fonctionne que si on a les droits
"Administrateur". Pas très pratique !!!!

Avez-vous des suggestions/remplacements de cette commande ?

---------------------

Voici un copie de mon script:

Set nouveau_map_group = CreateObject("WScript.Network")
Set ADSysInfo = CreateObject("ADSystemInfo")
Set usager_courant = GetObject("LDAP://" & ADSysInfo.UserName)
groupe_membre = LCase(Join(usager_courant.MemberOf))

If InStr(groupe_membre, comptab_group) Then

nouveau_map_group.MapNetworkDrive "s:", "\\cdbsrv1\Comptabilité\"

ElseIf InStr(groupe_membre, tgi_group) Then

nouveau_map_group.MapNetworkDrive "t:", "\\cdbsrv1\TGI\"

ElseIf InStr(groupe_membre, achats_group) Then

nouveau_map_group.MapNetworkDrive "v:", "\\cdbsrv1\Achats\"

End If

-------------------------

4 réponses

Avatar
Clive Lumb
Glenn,

Je ne vois pas comment être admin ou puisse influencer la possibilité
d'utiliser la fonction "join".
C'est peut-être la méthode "MemberOf" qui coince.

J'ai fait un script semblable et j'ai fait un fonction pour trouver un
groupe dans la liste "memberof"
Comme ceci:

Function EstMembreDe(MemberList, Groupe)

if IsArray(MemberList) then
FOR EACH MEMber in MemberList
Temp=InStr(MEMber,",")
If Temp >0 then
Temp=Left(MEMber, Temp-1)
Else
Temp=MEMber
End If
Temp=RIGHT(Temp, Len(Temp)-3)
If UCASE(Temp)=UCASE(Groupe) then
EstMembreDe=-1
wscript.echo "[ARRAY] Trouvé " & Groupe & " dans " & MEMber
Exit function
Else
EstMembreDe=0

End If
next
else
MEMber=MemberList
temp=INSTR(MEMber,",")
If Temp >0 then
Temp=Left(MEMber, Temp-1)
Else
Temp=MEMber
End If
Temp=RIGHT(Temp, Len(Temp)-3)
If UCASE(Temp)=UCASE(Groupe) then
EstMembreDe=-1
wscript.echo "[SCALAR] Trouvé " & Groupe & " dans " & MEMber
Exit Function
Else
EstMembreDe=0

End If
end if

End Function

Si tu veux je peux t'envoyer le script entier par mail


"Glenn Gagné" a écrit dans le message de
news:%
J'ai trouvé des exemples de scripts pour des ouvertures de session en
VBScript.

dans l'exemple je pouvais me connecter à des lecteurs réseaux tout
dépendant si je fais parti ou non d'un groupe X.

Mais la méthode utilise la commande "join"... le problème d'après les


infos
trouvés c'est que la commande "join" ne fonctionne que si on a les droits
"Administrateur". Pas très pratique !!!!

Avez-vous des suggestions/remplacements de cette commande ?

---------------------

Voici un copie de mon script:

Set nouveau_map_group = CreateObject("WScript.Network")
Set ADSysInfo = CreateObject("ADSystemInfo")
Set usager_courant = GetObject("LDAP://" & ADSysInfo.UserName)
groupe_membre = LCase(Join(usager_courant.MemberOf))

If InStr(groupe_membre, comptab_group) Then

nouveau_map_group.MapNetworkDrive "s:", "cdbsrv1Comptabilité"

ElseIf InStr(groupe_membre, tgi_group) Then

nouveau_map_group.MapNetworkDrive "t:", "cdbsrv1TGI"

ElseIf InStr(groupe_membre, achats_group) Then

nouveau_map_group.MapNetworkDrive "v:", "cdbsrv1Achats"

End If

-------------------------




Avatar
Clive Lumb
Après plus mure réfection, je crois que ton problème doit être dû au fait
que l'utilisateur standard ne fait pas partie de plusieur groupes, donc
MemberOf retourne une chaine plutôt qu'un array. Donc pas possible de faire
un "join". (L'admin doit faire partie de plusieurs groupes, c'est pour cela
que ça marche).

Ma fonction EstMembreDe resoudra ce problème.

Je te poste le script entier.

Clive


"Glenn Gagné" a écrit dans le message de
news:%
J'ai trouvé des exemples de scripts pour des ouvertures de session en
VBScript.

dans l'exemple je pouvais me connecter à des lecteurs réseaux tout
dépendant si je fais parti ou non d'un groupe X.

Mais la méthode utilise la commande "join"... le problème d'après les


infos
trouvés c'est que la commande "join" ne fonctionne que si on a les droits
"Administrateur". Pas très pratique !!!!

Avez-vous des suggestions/remplacements de cette commande ?

---------------------

Voici un copie de mon script:

Set nouveau_map_group = CreateObject("WScript.Network")
Set ADSysInfo = CreateObject("ADSystemInfo")
Set usager_courant = GetObject("LDAP://" & ADSysInfo.UserName)
groupe_membre = LCase(Join(usager_courant.MemberOf))

If InStr(groupe_membre, comptab_group) Then

nouveau_map_group.MapNetworkDrive "s:", "cdbsrv1Comptabilité"

ElseIf InStr(groupe_membre, tgi_group) Then

nouveau_map_group.MapNetworkDrive "t:", "cdbsrv1TGI"

ElseIf InStr(groupe_membre, achats_group) Then

nouveau_map_group.MapNetworkDrive "v:", "cdbsrv1Achats"

End If

-------------------------




Avatar
Glenn Gagné
Ça se peut bien... mais voici où j'ai pris ma source à propos de ce
problème:

http://www.computerperformance.co.uk/Logon/code/code_800A000D.htm

Ça semble un site crédible pour référence des erreurs VBScripts.

Je ne suis vraiment pas un expert en code VB je suis gestionnaire de réseaux
et non programmeur... Je vais essayer avec ta méthode, mais un p'tit exemple
concret me serait très utile.
Avatar
Clive Lumb
Glenn Gagné wrote:
Ça se peut bien... mais voici où j'ai pris ma source à propos de ce
problème:

http://www.computerperformance.co.uk/Logon/code/code_800A000D.htm

Ça semble un site crédible pour référence des erreurs VBScripts.

Je ne suis vraiment pas un expert en code VB je suis gestionnaire de
réseaux et non programmeur... Je vais essayer avec ta méthode, mais
un p'tit exemple concret me serait très utile.



Le script que je t'ai envoyé par mail devrait faire office d'exemple
concret.