Hello,
Alors voila mon problème, en fait je doit faire un script pour une GPO qui ajoute à chaque utilisateurs des imprimantes, mais certains utilisateurs n'ont pas le droit d'imprimer en couleur. J'ai donc partagé deux fois les imprimantes permétants d'imprimer en couleur : une dedier au groupe noir et blanc avec restriction, et une avec tout les droit pour les utilisateurs privilégiés.
Le problème qui se présente pour mon script est qu'il ne fonctionne pas corectement sous Windows 2000, il sort un message d'erreur au démarage, et les imprimante pouvant imprimer en couleur n'apparaissent pas ...
Voici mon script :
'Déclaration des variables imprimantes
Dim impr_1, impr_2, impr_3, impr_4, impr_5, impr_6, impr_7
'Déclaration du Serveur d'impression
PrintSRV = "\\serveur"
'Déclaration des Imprimantes dans les variables
PRN1 = "\impr_1"
PRN2 = "\impr_2"
PRN3 = "\impr_3"
PRN4 = "\impr_4"
PRN5 = "\impr_5"
PRN6 = "\impr_6"
PRN7 = "\impr_7"
'Flag sur les imprimantes
impr_1 = "no"
impr_2 = "no"
impr_3 = "no"
impr_4 = "no"
impr_5 = "no"
impr_6 = "no"
impr_7 = "no"
Set WshNetwork = WScript.CreateObject("WScript.Network" )
set res = CreateObject("Wscript.network" )
Set oPrinters = WshNetwork.EnumPrinterConnections
'Verification des droits de l'utilisateur
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
' Laisser les imprimante dans cet ordre!
For i = 0 to oPrinters.Count - 1 Step 2
if Ucase(oPrinters.Item(i+1)) = PrintSRV&PRN1 then
impr_1 = "yes"
end if
if UCase(oPrinters.Item(i+1)) = PrintSRV&PRN2 then
impr_2 = "yes"
end if
if UCase(oPrinters.Item(i+1)) = PrintSRV&PRN3 then
impr_3 = "yes"
end if
if UCase(oPrinters.Item(i+1)) = PrintSRV&PRN5 then
impr_5 = "yes"
end if
if UCase(oPrinters.Item(i+1)) = PrintSRV&PRN7 then
impr_7 = "yes"
end if
'Contrôle d'appartenance au groupe d'éditeur Couleur
If IsMember("GR_PRT_COLOR" ) then
if UCase(oPrinters.Item(i+1)) = PrintSRV&PRN6 then
impr_6 = "yes"
end if
if UCase(oPrinters.Item(i+1)) = PrintSRV&PRN4 then
impr_4 = "yes"
end if
end if
Next
Set WshNetwork = CreateObject("WScript.Network" )
if impr_1 = "no" then
WshNetwork.AddWindowsPrinterConnection PrintSRV&PRN1
end if
if impr_2 = "no" then
WshNetwork.AddWindowsPrinterConnection PrintSRV&PRN2
end if
if impr_3 = "no" then
WshNetwork.AddWindowsPrinterConnection PrintSRV&PRN3
end if
if impr_5 = "no" then
WshNetwork.AddWindowsPrinterConnection PrintSRV&PRN5
end if
if impr_7 = "no" then
WshNetwork.AddWindowsPrinterConnection PrintSRV&PRN7
end if
'Contrôle d'appartenance au groupe d'éditeur Couleur
If IsMember("GR_PRT_COLOR" ) then
if impr_4 = "no" then
WshNetwork.AddWindowsPrinterConnection PrintSRV&PRN4
end if
if impr_6 = "no" then
WshNetwork.AddWindowsPrinterConnection PrintSRV&PRN6
end if
end if
D'après le message d'erreur, le problème se situe dans la fonction.
Je précise que le script fonctionne bien sous XP et que seul les 2 imprimante pour le groupe GR_PRT_COLOR n'apparaissent pas pour les Windows 2000.
Voila, merci d'avance.