rt1970 10 Geschrieben 20. Juni 2020 Autor Melden Teilen Geschrieben 20. Juni 2020 (bearbeitet) 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 20. Juni 2020 von rt1970 Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 20. Juni 2020 Melden Teilen Geschrieben 20. Juni 2020 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. Zitieren Link zu diesem Kommentar
rt1970 10 Geschrieben 20. Juni 2020 Autor Melden Teilen Geschrieben 20. Juni 2020 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 Zitieren Link zu diesem Kommentar
rt1970 10 Geschrieben 21. Juni 2020 Autor Melden Teilen Geschrieben 21. Juni 2020 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 ? Zitieren Link zu diesem Kommentar
daabm 1.354 Geschrieben 21. Juni 2020 Melden Teilen Geschrieben 21. Juni 2020 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. 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.