webdoktor
Goto Top

ALLE Drucker per Logonscript löschen auch ohne bekannter Name

Wie kann ich alle Printer löschen?

Hallo zusammen

Ich habe ein Logonscript bei welchem ich die Drucker lösche und zwar mit folgendem Befehl:

*

DelPrinter "\\Server01\Drucker01"


sub DelPrinter(PrinterUNC)
on error resume next

wshNetwork.RemovePrinterConnection PrinterUNC


if err.number <> 0 then

print "Printer kann nicht entfernt werden: " & err.number & PrinterUNC & ": " & err.description


end if

on error goto 0
end sub


*

Nun ist mir leider nicht jeder Druckername bekannt da es sein könnte, das auch noch ältere Drucker
auf dem Rechner installiert sind. Gibt es daher eine Möglichkeit, einfach alle Drucker zu löschen welche
auf dem Client sind?

Vielen Dank für eure Antworten.
Marco

Content-Key: 142591

Url: https://administrator.de/contentid/142591

Printed on: April 16, 2024 at 13:04 o'clock

Member: NilsErik
NilsErik May 11, 2010 at 08:34:30 (UTC)
Goto Top
Am besten lädst du dir bei Microsoft con2prt herunter.

Mit

con2prt /f

werden dann alle Drucker getrennt.
Member: bastla
bastla May 11, 2010 at 09:48:12 (UTC)
Goto Top
Hallo Webdoktor!

Du brauchst eine Schleife ("Step 2" wäre vermutlich besser - komme aber gerade nicht zum Testen):
On Error Resume Next
For i = 0 To wshNetwork.EnumPrinterConnections.Count - 1
    wshNetwork.RemovePrinterConnection wshNetwork.EnumPrinterConnections.Item(i)
Next
Grüße
bastla
Mitglied: 77559
77559 May 11, 2010 at 09:50:00 (UTC)
Goto Top
Hallo Marco,

Wscript.network hat die Methode EnumPrinterConnections siehe hier in der MSDN.
Die listet aber alle Drucker auf, auch die an lokalen Ports.

Mit diesem abgewandelten Script sollte es gehen:
' <http://msdn.microsoft.com/en-us/library/zhds6k80%28VS.85%29.aspx>  
Set WshNetwork = WScript.CreateObject("WScript.Network")  
Set oPrinters = WshNetwork.EnumPrinterConnections
WScript.Echo "Network printer mappings:"  
For i = 0 to oPrinters.Count - 1 Step 2
  if Left(oPrinters.Item(i+1),2) = "\\" Then _  
  WScript.Echo "Port " & oPrinters.Item(i) & " = " & oPrinters.Item(i+1)  
Next

Gruß
LotPings
Mitglied: 77559
77559 May 11, 2010 at 09:58:47 (UTC)
Goto Top
Moin bastla,

ich würde das so bei mr nicht testen,, aus Angst das auch die lokalen Drucker zerschossen werden. Wenn ich in meinem Script Zeile 6 rausnehme kriege ich dieses Ergebnis
Port XPSPort: = Microsoft XPS Document Writer
Port FRITZ!fax: = FRITZfax Drucker
Port FRITZ!faxColor: = FRITZfax Color Drucker
Port nul: = An OneNote 2010 senden
Port USB001 = \\PC12\HP Officejet 5600 series

Gruß
LotPings
Member: Webdoktor
Webdoktor May 11, 2010 at 10:53:41 (UTC)
Goto Top
Liebe Administrator-User

Zuerst mal vielen herzlichen Dank für eure Bemühungen und die prompten
Antwort. Ich schätze das sehr! DANKE!

Ich habe das Script von LotPings getestet und es listet mir wirklich nur die
Netzwerkprinters auf und funktioniert somit einwandfrei - auch hier nochmals
danke!

Wünsche euch eine erfolgreiche Woche!
Marco
Member: bastla
bastla May 11, 2010 at 13:19:24 (UTC)
Goto Top
Hallo LotPings!

Dein Einwand hinsichtlich der lokalen Drucker ist natürlich richtig - da es hier um ein Logonscript geht, wäre allerdings zu hoffen, dass mangels entsprechender Berechtigungen der betroffenen User (deshalb auch "On Error Resume Next") die lokalen Drucker unbeschadet davonkommen ...

... wobei aber Deine "Sicherheitsvariante" diese Hoffnung zur Gewissheit werden lässt. face-smile

Grüße
bastla