PAUSE Imprimante VBS Windows 2000

PAUSE Imprimante VBS Windows 2000 - VB/VBA/VBS - Programmation

Marsh Posté le 25-05-2005 à 07:20:40    

Bonjour,
 
Je voudrais mettre en pause des imprimantes (en VBScript) qui sont sur certains serveurs, j' ai trouvé des scripts pour windows 20003 (laboratoire Microsoft) qui marche bien
 
strComputer = "."
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2" )
 
Set colInstalledPrinters =  objWMIService.ExecQuery _
    ("Select * from Win32_Printer Where Name = 'Nom de  l'imprimante'" )
 
For Each objPrinter in colInstalledPrinters  
    ObjPrinter.Pause()
Next
 
 
Mais, Aucun script trouvé ou syntaxe pour W2K, quelle est la syntaxe a utilisé car "objpinter.Pause()", il connait pas
Et je me galére depuis plusieurs jours sans trouver ....
 
Merci
 

Reply

Marsh Posté le 25-05-2005 à 07:20:40   

Reply

Marsh Posté le 06-06-2005 à 16:37:50    

....

Reply

Marsh Posté le 07-06-2005 à 11:22:09    

Pas de bol :( Méthode non supportée sur 2k.
Regarde du coté de PrnAdmin.dll du kit de ressources (obj.PrinterPause et obj.PrinterResume) et ici...

Reply

Marsh Posté le 08-06-2005 à 09:31:41    

arf je comprend pas tellement :( j ai bien installe PrnAdmin.dll sur ma machine cliente
mais des ke j execute  
 
oMaster = ObjectCreate("PrintMaster.PrintMaster.1" ) (reference a ton lien "ici..." cf plus haut
 
Il me dit qu il y a une erreur ...

Reply

Marsh Posté le 08-06-2005 à 09:55:50    

arf! peut-être parce que: implicitement, le site en question omet systématiquement l'instruction set pour une variable objet (Set oMaster = ...). De manière plus académique chez M$...

Reply

Marsh Posté le 08-06-2005 à 13:16:07    

j ai essaye avec Set ossi ... mai ca marche pa non plus

Reply

Marsh Posté le 08-06-2005 à 13:23:43    

ca sera plus imple voila le code ke j ai mis
 
Set WshShell = Wscript.CreateObject("Wscript.Shell" )
WshShell.Run "regsvr32 /s Prnadmin.dll",1,TRUE
 
Set oMaster = CreateObject("PrintMaster.PrintMaster.1" )
oMaster.PrinterPause( "\\frasprntst", "\FRAPIJ2800" )
 
Et il me met "Cannot use parentheses when calling sub"

Reply

Marsh Posté le 08-06-2005 à 13:26:43    

Non c bon ca merche c moi je fait le boulzor ...

Reply

Marsh Posté le 08-06-2005 à 13:30:19    

Je te remercie Vraiement beaucoup :)
 
PS ca marche sur Windows 2000 ca marchera t il ossi sur Windows 2003 ?

Reply

Marsh Posté le 08-06-2005 à 16:04:51    

T'avais un sur-stock de parenthèses  ;)  
Bien-sur! sur 2k3; même mieux, pour certaines méthodes exploitant à 'fond' WMI.  
En plus, des scripts fournis prn*.vbs
Tu as la doc associée PrnAdmin.doc qui présente l'essentiel.

Reply

Marsh Posté le 08-06-2005 à 16:04:51   

Reply

Marsh Posté le 09-06-2005 à 08:01:06    

Je te remercie encore vraiement beaucoup  
c bon c a archiver

Reply

Marsh Posté le 09-06-2005 à 09:52:00    

non pa tt de suite a archiver ... un peit truc encore :)
Voila j ai un morceau de code
 
arrComputers = Array("FRASPRN31" )
 
Set objWMIService = Nothing
Set colItems = Nothing
 
'Connection in Win32_NTLogEvent count number of printer
For Each strComputer In arrComputers
 Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2" )
 Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_NTLogEvent where logfile = 'system' and sourcename = 'print' and type = 'Information' and eventcode = '10'", "WQL", _
         wbemFlagReturnImmediately + wbemFlagForwardOnly)
 For Each objItem In colItems
  nb_print = nb_print + 1
    Next
Next
MsgBox(nb_print)
 
Et il me met erreur de memoire  
Error : Out of Memory
Code : 80041006
Source : SWbemServices
 
Comment on fait pour palier ce pb ?
 

Reply

Marsh Posté le 10-06-2005 à 16:44:34    

Ouch!  
Tu aurais dû créer un autre topic, pour un peu ...
J'ai réussi à créer la même erreur, par des moyens pas très académiques (settings de WMI sur l'hystérisis d'objets client), sur une collection de 10 events, mais ça me paraît un peu gros!... J'opte, avant tout, sur le fait que le nombre d'objets événements retournés, via la requête, doit être trop important.
Pourtant ton appel en mode semi-synchrone est bon avec les iFlags optimums ;) juste un petit avis, utilise Eventtype(Entier octet) au lieu de Type(string)
Pour contourner ce problème, essaie par la méthode d'appel Asynchrone ...
 
'- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  
'Traitement du log mode asynchrone  
'Note: Pour des raisons de sécurité dans ce mode, Ajouter ou Modifier
'[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WBEM\CIMOM] "UnsecAppAccessControlDefault"="1"
 
'DEB
strcomputer = "Ordprin"
bdone = False
NBEvent=0    
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strcomputer & "\root\cimv2" )
Set oSink = WScript.CreateObject("WbemScripting.SWbemSink", "SINK_" )
objWMIService.ExecQueryAsync oSink, "SELECT * FROM Win32_NTLogEvent where logfile = 'system' and sourcename = 'print' and Eventtype = 2 and eventcode = 6","WQL", _  
wbemFlagSendStatus
 
'test
' objWMIService.ExecQueryAsync oSink,"Select * from Win32_NTLogEvent where logfile = 'system' and sourcename = 'DCOM' and Eventtype = 1 and eventcode = 10002", "WQL", &h80
 
'attend la fin du moulinet!
While Not bdone
 WScript.sleep 1000
Wend
 
'FIN
 
'Sur événement fin traitement requête asynchrone
Sub SINK_onCompleted(HResult, objErr, objcontext)
 if Hresult=0 then _
  WScript.Echo "Requête terminée, " & _
  nbevent & " évènement(s) retourné(s)"  
     bdone = True
End Sub
 
'sur arrivée d'un objet
Sub sink_onObjectReady(obj, objcontext)
 nbevent=nbevent+1
 
 'TEST VISUALISATION (à utiliser sur une petite collection, sinon panne de souris!)  
 Mes= "Journal d'événements '"  & obj.LogFile & _
 "' de l'ordinateur " & obj.ComputerName  & vbcrlf & vbcrlf
 Mes= Mes & "Numéro de l'enregistrement ." & vbtab & obj.RecordNumber & vbcrlf  
 Mes= Mes & "Catégorie . . . . . . . . . . . . ." & vbtab & obj.category & vbcrlf
 if obj.CategoryString <> "" then  
  Mes= Mes & "Nom . . . . . . . . . . . . . . . ." & vbtab & obj.CategoryString & vbcrlf    
 end if
 Mes= Mes & "Généré part. . . . . . . . . . . ." & vbtab & obj.SourceName & vbcrlf  
 Mes= Mes & "Sous la session. . . . . . . . . ." & vbtab & obj.user & vbcrlf  
 Mes= Mes & "Survenu le . . . . .  . . . . . . ." & vbtab & DateStringToDate (obj.TimeGenerated) & vbcrlf  
 Mes= Mes & "Inscrit le. . . . . .  . . . . . . . ." & vbtab & DateStringToDate (obj.TimeWritten) & vbcrlf  
 Mes= Mes & "A le Code d'événement . . . ." & vbtab & obj.EventCode & vbcrlf
 Mes= Mes & "De type. . . . . . . . . . . . . . ." & vbtab & obj.Type & vbcrlf  
 Mes= Mes & "Avec le message. . . . . . . . ." & vbtab & obj.Message
 WScript.Echo Mes
 'FIN TEST VISUALISATION        
End Sub
 
'Petit traitement de datetime exploité pour TEST dans sink_onobjectready
Function DateStringToDate(dtmEventDate)
    DateStringToDate = CDate(Mid(dtmEventDate, 5, 2) & "/" & _
        Mid(dtmEventDate, 7, 2) & "/" & Left(dtmEventDate, 4) _
            & " " & Mid(dtmEventDate, 9, 2) & ":" & _
                Mid(dtmEventDate, 11, 2) & ":" & Mid(dtmEventDate, _
                    13, 2))
End Function
 

Reply

Sujets relatifs:

Leave a Replay

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