ronny80 10 Geschrieben 22. Mai 2007 Melden Teilen Geschrieben 22. Mai 2007 Hallo Zusammen, Ich steh vor der herausforderung, dass ich auf einem Terminalserver einen Druckershare auf einen anderen Drucker umleiten muss. Das Zeil ist, wenn ein Drucker defekt ist, alle Druckaufträge beim anderen Drucker raus kommen. Der User kann dann ein Skript laufen lassen, welches auf dem TS im Druckershare die IP ändert oder so ähnlich... folgendes Skript hab ich schon ausprobiert..: dim oMaster1 Dim oMaster2 dim oPrinter1 Dim oPrinter2 'The following code creates the required PrintMaster and Printer objects. Set oMaster1 = CreateObject("PrintMaster.PrintMaster.1") Set oMaster2 = CreateObject("PrintMaster.PrintMaster.1") Set oPrinter1 = CreateObject("Printer.Printer.1") Set oPrinter2 = CreateObject("Printer.Printer.1") 'The following code gets the existing printer settings. This step is optional; however, if you do not use it, you 'will not know which options have been left on the default settings. Because there are so many properties 'you can set, you might fail to enter a value, and the default settings might cause unwanted effects. oMaster1.PrinterGet "\\SERVER", "Drucker1", oPrinter1 oMaster2.PrinterGet "\\SERVER", "Drucker2", oPrinter2 'The following code sets the ServerName and is used only for a remote printer if you did not use 'PrinterGet. 'If you did use PrinterGet, it fills in the ServerName property for you. 'oPrinter.ServerName = "\\SERVER" 'The following code sets some printer properties. Because there are so many settings, the following code 'only configures a few settings. You might or might not want to set any of the following properties. 'oPrinter.PortName = "lpt1:" 'Drucker1 oPrinter1.PrinterName = "Drucker1_old" oPrinter1.ShareName = "Drucker1_old" oPrinter1.Location = "Leit Alt" oMaster1.PrinterConnectionDel oMaster1.PrinterSet oPrinter1 'Drucker2 oPrinter1.PrinterName = "Drucker1" oPrinter2.ShareName = "Drucker1" oPrinter2.Location = "Pas ex drucker2" 'oPrinter.Comment = "comment" 'oPrinter.DataType = "RAW" 'oPrinter.NewName = "New Printer Name" 'oPrinter.SepFile = "c:\sep-file" 'The following code sets printer attributes. They can be set to true or false to enable or disable the setting. 'oPrinter.Queued = true / false 'oPrinter.Direct = true / false 'oPrinter.Default = true / false 'oPrinter.Shared = true / false 'oPrinter.Hidden = true / false 'oPrinter.EnableDevq = true / false 'oPrinter.KeepPrintedJobs = true / false 'oPrinter.DoCompleteFirst = true / false 'oPrinter.WorkOffline = true / false 'oPrinter.EnableBidi = true / false 'oPrinter.RawOnly = true / false 'oPrinter.Published = true / false 'The following code saves the printer settings. oMaster2.PrinterSet oPrinter2 'The following code uses the Err object to determine whether the printer settings were updated successfully. if Err <> 0 then 'An error occurred end If Hat jemand Erfahrung auf dem Gebiet? Oder hat jemand schon ein solches Skript gemacht? gruss ronny Zitieren Link zu diesem Kommentar
Gast Geschrieben 23. Mai 2007 Melden Teilen Geschrieben 23. Mai 2007 Hallo, schaue dir doch mal die Option "Druckerpool" in den Druckereinstellungen an. Dann geht das ganze auch ohne Script. Nehme doch an, dass der Ersatzdrucker in der Nähe des ersten steht. Gruß SB Zitieren Link zu diesem Kommentar
ronny80 10 Geschrieben 23. Mai 2007 Autor Melden Teilen Geschrieben 23. Mai 2007 hi.. die Sache ist die, der Ersatzdrucker ist eben auch im Einsatz... Dieser ist jedoch nicht produktionskritisch... so könnte dieser für den anderen einspringen im Notfall... das ganze läuft in einem Schichtbetrieb... sonst muss ich eines morgens um 3 Uhr in den Betrieb fahren und den Drucker umhängen :-) daran hab ich auch gedacht, aber geh eben ned.. leider Zitieren Link zu diesem Kommentar
Ernst3 10 Geschrieben 23. Mai 2007 Melden Teilen Geschrieben 23. Mai 2007 Hallo, das ganze geht doch ja auch nur dann, wenn der andere Drucker genau der gleich ist wie der , der ausgefallen ist (So habe ich es in Errinnerung). Und da ist es wirklich am leichtesten eben den Hacken zu setzen, wenn es muß. Die Frage ist wie die Rechteeinstellung sind, ob ein User das einrichten kann. Mfg Ernst Zitieren Link zu diesem Kommentar
ronny80 10 Geschrieben 24. Mai 2007 Autor Melden Teilen Geschrieben 24. Mai 2007 Hi.. Es sind handelt sich um 2 HP Laserjet 8000TN... Von dem her kein Problem.. Die Frage ist eben, was für Rechte ein User haben muss, damit er den Share aufheben kann und ändern kann. Grundsätzlich haben die Benutzer bei uns auf dem Drucker alle Rechte.. wie Manage Printers, manage Documents und Print gruss Zitieren Link zu diesem Kommentar
ronny80 10 Geschrieben 24. Mai 2007 Autor Melden Teilen Geschrieben 24. Mai 2007 Ich nehme nun dieses Skript: strComputer = "server" 'servername des hosts oder . für localhost Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") 'Drucker bei welchem der Port geändert wird Set objPrinter = objWMIService.Get _ ("Win32_Printer.DeviceID='Drucker1'") 'Nimm diesen Port objPrinter.PortName = "test" objPrinter.Put_ strComputer = null Lokal funktioniert es, blos wie mache ich dass ich das Skript auf dem Server zum laufen bringe? Also via Skript auf dem Server ändern. Welche Rechte werden auf dem Server benötigt? gruss ronny Zitieren Link zu diesem Kommentar
cipollini22 10 Geschrieben 24. Mai 2007 Melden Teilen Geschrieben 24. Mai 2007 Ein Druckerpool sollte aber auch so funktionieren. Beide Ports anlegen und den wichtigen rucker mit Pool anlegen. Den nicht so wichtigen Standardmässig anlegen. Somit hättest du einen Port mit zwei Druckobjekten belegt. Das funktioniert auch bei unterschiedlichen Treibern wie PCL und PS. Dann müsste sich keiner mit der Umkonfiguration herumschlagen. Gruß, Aljoscha Zitieren Link zu diesem Kommentar
ronny80 10 Geschrieben 24. Mai 2007 Autor Melden Teilen Geschrieben 24. Mai 2007 hmm ja das ist mir klar, dass ich x Drucker auf einen Port lenken kann. Aber schlussendlich muss der Share ja stimen.. das Programm druckt auf einen Druckershare... Zitieren Link zu diesem Kommentar
ronny80 10 Geschrieben 25. Mai 2007 Autor Melden Teilen Geschrieben 25. Mai 2007 Mit dem Skript oben, klappts problemlos lokal! Blos wie kann ich das Skript auf dem Server ausführen? mit diesem gehts ned... Dim Controller, RemoteScript Set Controller = WScript.CreateObject("WSHController") Set RemoteScript = Controller.CreateScript("test.vbs", "server") RemoteScript.Execute Do While RemoteScript.Status <> 2 WScript.Sleep 100 Loop Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.