Précédent   Forum du club des développeurs et IT Pro > Autres langages > Général Visual Basic 6 et VBScript > VBScript
VBScript Le forum d'entraide sur VBScript. Avant de poster -> La FAQ VBScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 24/12/2012, 09h24   #1
djinlemage
Invité de passage
 
Inscription : avril 2009
Messages : 22
Détails du profil
Informations personnelles :
Localisation : France, Moselle (Lorraine)

Informations forums :
Inscription : avril 2009
Messages : 22
Points : 4
Points : 4
Par défaut SetDefaultPrinter sous TSE 2008 avec redirection imprimante Local

Bonjour et bonne fêtes à tous !!!!

Je me permets de vous consulter car je rencontre un problème au niveau de sélection d’imprimante.

Ma problématique se trouve chez un de mes clients qui vient de passer sous TSE 2008 Serveur.

J’ai un contrôleur de domaine avec prêt de 800 utilisateurs qui se trouvent tous dans une même OU
Ce n’est pas moi ai choisi !
Ces mêmes utilisateurs sont sur des sites différents avec chaque site plusieurs étages.
Chaque utilisateur se connecte à une session TSE.
Lors des connexions TSE, l’imprimante locale est remontée dans la session TSE

J’ai un serveur d’impression avec tous les copieurs et les pilotes d’impressions.

Ma problématique est simple :
Je cherche à utiliser l’imprimante locale pour identifier quel imprimante du serveur d’impression doit être défini comme impression par défaut. (Encore une fois pas le choix, le client n’a aucune autre manière d’identifier le lieu.)

Il y a encore quelques semaines, le serveur TSE était sous 2003 serveur. Et un script de ma composition fonctionnait très bien.
Depuis que le client a passé ce serveur TSE en 2008, le script VBS ne fonctionne plus.

Le script récupéré l’imprimante par défaut de la session TSE (qui est la redirection de l’imprimante de la session locale) puis allait chercher l’équivalent sur le serveur d’impression.

Maintenant, sur 2008, le script installe bien mon imprimante mais refuse de la passer par défaut.
La fonction VBS SetDefaultPrinter ne fonctionne pas.

J’ai testé autre chose :
Quand, lors de la connexion à TSE, l’imprimante local n’est pas récupéré, le SetDefaultPrinter fonctionne bien.

Est-ce normal ?
Pouvez-vous m’aider ?

Ci-dessous le script VBS :

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
 
'instance WNetwork
Set wshNetwork = WScript.CreateObject("WScript.Network")
 
NomMachine = WshNetwork.ComputerName
 
If NomMachine = "PC-DMEXIS" then
 
    'Recuperation des imprimantes
    strComputer = "."
    On Error Resume Next
    Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set colInstalledPrinters = objWMIService.ExecQuery _
    ("Select * from Win32_Printer")
 
    For Each objPrinter in colInstalledPrinters
 
        'si imp est par defaut
        If objPrinter.Default = True Then
            NomImpDef=objprinter.Name
 
            'expression reguliere
            set Modele = new RegExp
 
            'modele de recherche
            Modele.pattern=".*\("
            'application du modele
            Set correspondances = Modele.execute(NomImpDef)
 
            If correspondances.count<>0 Then
 
                For i=0 To correspondances.count-1
                    'suppression des 2 dernier caractere
                    NewNomImp = Left(correspondances(i),Len(correspondances(i))-2)
                Next
            End if
 
            'ajout de l'imp
            wshNetwork.addWindowsPrinterConnection "\\SERVEUR-TESTIMP.DOMAINETEST.LOCAL\" & NewNomImp
            'imp par defaut
            wshNetwork.setdefaultprinter "\\SERVEUR-TESTIMP.DOMAINETEST.LOCAL\" & NewNomImp
 
        Else
 
        End If
 
    Next
 
    Else
 
    wscript.echo "Pas sur TSE"
 
End If
djinlemage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/12/2012, 08h51   #2
djinlemage
Invité de passage
 
Inscription : avril 2009
Messages : 22
Détails du profil
Informations personnelles :
Localisation : France, Moselle (Lorraine)

Informations forums :
Inscription : avril 2009
Messages : 22
Points : 4
Points : 4
Bonjour de nouveau

J'ai trouvé comment faire !!
Voici le script :

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
 
Set wshNetwork = WScript.CreateObject("WScript.Network")
 
CheminServeurImp = "\\WIN-TM8OTUTU8GN\"
NomMachine = WshNetwork.ComputerName
 
'Si sur TSE
If NomMachine = "2008TSETEST" or NomMachine = "TS1" or NomMachine = "TS2" or NomMachine = "TS3" or NomMachine = "VAPPLIS8" or NomMachine = "VTS1" or NomMachine = "VTS2" then
 
	'WScript.Sleep 30000
	'recuperation des imprimantes
	strComputer = "."
	On Error Resume Next
	Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
	Set colInstalledPrinters = objWMIService.ExecQuery ("Select * from Win32_Printer")
 
	'Si imp par defaut
	For Each objPrinter in colInstalledPrinters
		If objPrinter.Default = True Then
			NomImpDef=objprinter.Name
			'exp reguliere pour formatage du nom
			set Modele = new RegExp
			Modele.pattern=".*\("
			Set correspondances = Modele.execute(NomImpDef)
 
			'si imp par defaut
			If correspondances.count<>0 Then
				For i=0 To correspondances.count-1
					'application du modele d'expression reguliere
					NewNomImp = Left(correspondances(i),Len(correspondances(i))-2)
				Next
			End if
 
			'ajout de l'imp correspondant
			wshNetwork.addWindowsPrinterConnection CheminServeurImp & NewNomImp
			'passage en par defaut
			Set ObjWShell = WScript.CreateObject("WScript.shell")
			VarProg = "cscript c:\Windows\System32\Printing_Admin_Scripts\fr-FR\prnmngr.vbs -t -p "
			VarImp = """" & CheminServeurImp & NewNomImp & """"
			ObjWShell.run  VarProg & VarImp
		End If
 
	Next
 
End If
Comme vous pouvez le voir, je me suis appuyé sur le prnmngr.vbs fourni par Windows.

Par contre pour mon information personnelle, quelqu'un pourrai m'expliqué pourquoi leurs SetDefaultPrinter fonction et pas le mien ?
En analysant le vbs de Windows, il est passé en paramètre un login et user.
Est ce ça ?

PS : Je le passe pas en résolu pour avoir l'information
djinlemage est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 05h15.


 
 
 
 
Partenaires

Hébergement Web