also, hier erst mal wie versprochen der script-text:
Code:
Option Explicit
Dim objWMIService, colInstalledPrinters, strComputer, objPrinter
'Computernamen spezifizieren
strComputer= "."
' über GetObject mit dem WMI namespace root\cimv2Set verbinden
set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
'Eine Collection mit allen Druckern anlegen
Set colInstalledPrinters = objWMIService.ExecQuery ("Select * from Win32_Printer")
'für jeden Drucker den Status prüfen und evtl. als Standard setzen
'dabei sollen natürlich der "Document Writer" und evtl. vorhandene
'Faxdrucker ausgenommen werden. Evtl. Namen anpassen!
For Each objPrinter in colInstalledPrinters
If objPrinter.WorkOffline="Falsch" and objPrinter.name<>"Fax" and objPrinter.name<>"Microsoft XPS Document Writer" then
objPrinter.SetDefaultPrinter()
End if
Next Falls du einen Faxdrucker eingebaut hast (über das Modem), oder einen pdf-Drucker musst du diese natürlich ausnehmen, damit sie nicht zum Standarddrucker gemacht werden. Gleiches gilt für den "Document Writer" von Windows. Schau einfach mal in der Systemsteuerung unter "Hardware und Sound" --> Drucker nach und ergänze die zeile, die mit "If" beginnt, hinten entsprechend mit den dort angegebenen Namen, die vielleicht auch von denen im Beispiel oben abweichen (<> bedeutet "ungleich", d.h. wenn der Name des Druckers nicht "Fax" ist, dann...).
Den fertigen Programmiertext dann einfach in ein Notepad-Fenster kopieren und das ganze in einem beliebigen Ordner speichern, z.B. unter dem Namen "DefaultPrinter.
vbs". (Endung beachten)
!Achtung! Damit Notepad beim Speichern nicht noch ".txt" hinten dranhängt, muss man im Speichern-dialog den Dateityp auf "Alle Dateien" umstellen!
Wenn du das fertige Skript ausführst, müsste eigentlich automatisch der angeschlossene (und eingeschaltete!) Drucker zum Standarddrucker werden...
Wenn der jeweilige Drucker beim Systemstart schon angeschlossen und eingeschaltet ist, kannst du das Skript einfach bei jedem Start ausführen (kopieren nach Start-->Programme-->Autostart).
Wenn der Drucker irgendwann im Betrieb angestöpselt wird, dann muss man das in der Aufgabenplanung über irgendein Ereignis regeln. Ich hab bisher nichts passendes gefunden, auch nicht bei der suche in google. Vielleicht hat ja sonst jemand eine Idee?
Ansonsten hoffe ich, dass das alles so klappt, ich konnte das skript nämlich leider nur an einem xp-rechner testen...

Gruß,
freddie331.
-----Doppelpost zusammengeführt am 10.4.2009 um 17:10:59-----
Eine Anmerkung vielleicht noch:
Das Ganze funktioniert nur mit Druckern am USB-anschluss, da windows nur dann erkennt, ob diese offline oder online sind.
Bei anderen Druckern könnte man es mal so versuchen
Code:
If objPrinter.PrinterStatus=3 then
objPrinter.SetDefaultPrinter()
End if Status=3 bedeuted, dass der Drucker "bereit" ist. Das überprüft Windows aber nur, wenn ein Druckauftrag gestartet wird. Für die PrinterStatus-Abfrage muss man also erst einen Druckauftrag starten, was etwas umständlich ist!
Gruß,
freddie331.