Jump to content

suche Script um Netzwerkdrucker mit "Drucker nicht gefunden" zu löschen


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Ich scheitere grad hier:

For /F "Tokens=4 delims=\" %%I In ('reg query HKCU\Printers\Connections ^|find /I "Printer-A"') DO GOTO Ende1 ELSE rundll32 printui.dll PrintUIEntry /dn /q /n "Printer-A"

Ende1:

For /F "Tokens=4 delims=\" %%I In ('reg query HKCU\Printers\Connections ^|find /I "Printer-B"') DO GOTO Ende2 ELSE rundll32 printui.dll PrintUIEntry /dn /q /n "Printer-B"

:Ende2

 

Durchsuche Registry, wenn gefunden gehe weiter (oder hier zu Ende1 bzw. 2) ansonsten - wenn nicht gefunden dann auch nicht existent, also löschen...

Ideal wäre hier wenn er eine txt-Datei mit den Namen der bekannten Drucker durchsuchen würde...

 

!!!Funktioniert aber nicht, weil er alle anderen existierenden Drucker in der ersten Zeile schon löschen würde.!!!

Es müssten 2 Tabellen werden: 1. lokale Drucker aus Registry und 2. existierende freigegebene Drucker

Nur wenn es 2. nicht in 1. gibt, dann lösche diesen Drucker.

 

Soweit reichen meine DOS-Kenntnisse dann doch nicht. ?

 

Logdatei... Naja... Hätte es schon ganz gern zu Montag fertig, so dass das Script gleich Mo früh greift.

Alle Drucker löschen und neu anlegen (lassen) per GPP -> ungern, da dann 90% der Leute "nicht drucken können", weil sie nicht wissen, was ein Standarddrucker ist und wie man den umstellt... Ähnlich wie bei mir: ich will das Essen auf dem Teller - wie es zubereitet wird hab ich keine Ahnung...

Darum auch die Bereinigung. Wird ja auch ein super Script für die Zukunft, wenn mal Drucker entfernt werden...

bearbeitet von rt1970
Link zu diesem Kommentar
vor 43 Minuten schrieb rt1970:

ungern, da dann 90% der Leute "nicht drucken können", weil sie nicht wissen, was ein Standarddrucker ist und wie man den umstellt... Ähnlich wie bei mir: ich will das Essen auf dem Teller - wie es zubereitet wird hab ich keine Ahnung...

Der Vergleich hinkt aber ganz gewaltig. Während die Bedienung eines Computers für den normalen Büro-Täter vermutlich einen  großen Teil seiner Arbeitszeit einnimmt, wirst Du ja wohl kaum den Groß-Teil Deiner Freizeit zu Hause in der Küche verbringen (was im Übrigen auch gar nicht nötig ist, um ein wohlschmeckendes Mahl zuzubereiten).  ;-) 

 

Ich verstehe immer nicht, warum man Anwender so - sorry - verhätscheln muss. Es kann ja wohl nicht zu viel verlangt sein, die Einstellung "Standard-Drucker" zu verstehen.  

Vielleicht nimmst Du Dir doch noch ein bissl mehr Zeit und steckst noch ein wenig Energie in die Planung und Vorbereitung. Solche Hau-Ruck-Aktionen haben das Potenzial, gewaltig nach hinten los zugehen. Eine entsprechende Information Deiner Anwender wäre dabei einer Meinung nach bestimmt auch hilfreich.

vor einer Stunde schrieb rt1970:

Soweit reichen meine DOS-Kenntnisse dann doch nicht. ?

Wie sieht's mit Powershell aus? Da dürfte das relativ einfach möglich sein.

Link zu diesem Kommentar

Ich möchte hier keine Grundsatzdiskussion anfangen. Die Leute sollen ihren Job machen und ich meinen. Und ja - ich verhätschel die Leute - weil ich es (das meiste) kann.

Powershell ginge sicher auch - muss nur mal schauen, wie wie es ging eine unsignierte .ps1 ausführen zu lassen...

Überlegung wäre:

1. Standarddrucker auslesen und merken

2. alle (Netzwerk-) Drucker löschen

3. gpupdate /force /target:user

Link zu diesem Kommentar

Damit scheint es zu funktionieren.

Nachdem ich eine Richtlinie mit Anmeldescript ClnPrt.cmd erstellt habe passiert beim anmelden folgendes: erst wird der Standarddrucker ausgelesen, dann ALLE Netzwerkdrucker gelöscht und durch gpupdate die zugewiesenen Drucker verbunden. Anschließend wird der der anfängliche Standarddrucker gesetzt. Damit diese Prozedur nicht jedes mal beim anmelden ausgeführt wird, habe ich eine Datei PrtClean.log im Temp-Folder des Users erstellt. Ist diese vorhanden wird gleich beendet, da dieses Profil schon "gereinigt" wurde.

Hier die Batch ClnPrt.cmd

@echo off

If exist %temp%\PrtClean.log goto :EOF

if not "%minimized%"=="" goto :minimized
set minimized=true
start /min cmd /C "%~dpnx0"
set minimized=
goto :EOF

:minimized

echo Detecting Default Printer ...
FOR /F "tokens=1-3* skip=2 delims==" %%A in ('wmic printer where "default=True" get name^,servername^,sharename /value ' ) do (
setlocal EnableDelayedExpansion
set DefaultPrinter%%A=%%B
)

echo Default Printer: %DefaultPrinterName%
delprt.vbs
gpupdate /target:user
RUNDLL32 printui.dll,PrintUIEntry /y /n "%DefaultPrinterName%"

echo Clean-OK -> %temp%\PrtClean.log

und dazu die DelPrt.vbs zum löschen aller Netzwerkdrucker:

Dim net
Set net = WScript.CreateObject("WScript.Network")
RemNetPrinter()
FUNCTION RemNetPrinter()
Dim oPrinters
Set oPrinters = net.EnumPrinterConnections
For i = 1 to oPrinters.Count Step 2
IF instr(oPrinters.Item(i), "\\") = 1 THEN
net.RemovePrinterConnection oPrinters.Item(i), true, true
END IF
Next
END FUNCTION

Alles aus div. Foren zusammengestellt. Bin auf Montag gespannt ?

Link zu diesem Kommentar

Ich würde das nie per Batch machen - zu unflexibel :-)

Wir haben mal ein Skriptframework gebaut, das über firmeneigene AD-Attribute und Kontaktobjekte im AD IP- und Netzwerkdrucker konfiguriert (in jede erdenkliche Richtung - inkl. benutzerdefinierter Templates für Standarddruckeinstellungen bei IP-Direktdruck). Mit WMI geht das alles recht problemlos. Nur ist das Verarbeiten der WMI-Ausgaben in Batch eher "Krampf", das geht besser in VBS und noch besser in Powershell.

Und wenn Du nicht so viel selbst skripten willst, lohnt sich vielleicht mal ein Blick in C:\WINDOWS\System32\Printing_Admin_Scripts - kann man auch kopieren und adaptieren.

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...