bibelraptor
Goto Top

Lokale Drucker per Batch einmalig löschen

Hallo Community,

habe ein größeres Problem vor mir. Meine Aufgabe besteht darin einen Druckserver einzurichten, die Drucker einzubinden, sowie per GPO bereitstellen.
Dies ist soweit geschehen.

Nun gibt es folgendes Problem. Bevor das ganze System live geht, muss ich die bereits davor per TCP/IP installierten Drucker auf den Clients löschen, da
die GPO die Drucker vom Printserver ja automatisch auf die Clients klatscht. (Sonst hat jeder User am Ende 2-3 Drucker zur Auswahl)

Da wir in unserem Unternehmen über 700 Clients haben hätte ich das gern per Logonscript getan.


Ich habe allerdings wirklich keinen Dunst von Batch oder Skirpts schreiben.

Die Clients arbeiten auf Win7 und teilweise noch WinXP. Der Printserver ist ein Windows 2008 R2.

Könnt ihr mir weiterhelfen mit Anleitung am Besten? face-smile


Vielen vielen Dank im voraus :D

Content-Key: 229626

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

Printed on: April 23, 2024 at 08:04 o'clock

Member: Ausserwoeger
Ausserwoeger Feb 13, 2014 updated at 10:37:01 (UTC)
Goto Top
Hi

Das ist kein Problem einfach kix downloaden http://www.kixtart.org/
Ein Skript anlegen und in das Loginskript einbinden.

PS: Anleitung gibts ebenfalls dort und einfach zu machen ist es auch.

Beispiel:
Printer.kix:
DelPrinterConnection ("\\Server\DJ970")
AddPrinterConnection ("\\Server\OptraS1255")

Beispiel eintrag Loginskript:
call \\Server\Netlogon\kix32.exe \\Server\Netlogon\printer.kix


LG
Member: colinardo
colinardo Feb 13, 2014 updated at 12:23:52 (UTC)
Goto Top
Hallo BibelRaptor,
hier ein mögliches VBS-Script: (löscht nur Netzwerkdrucker)
Set objNetwork = WScript.CreateObject("WScript.Network")  
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")  
Set colInstalledPrinters = objWMIService.ExecQuery("Select * from Win32_Printer where Network = True")  
For Each objPrinter in colInstalledPrinters
    objNetwork.RemovePrinterConnection objPrinter.Name
Next
oder wenns Powershell sein darf:
$comNetwork = New-Object -ComObject "Wscript.Network"  
gwmi -Class Win32_Printer | ?{$_.Network -eq $true} | %{$comNetwork.RemovePrinterConnection($_.Name)}
Grüße Uwe
Member: Sheogorath
Sheogorath Feb 13, 2014 updated at 14:21:13 (UTC)
Goto Top
Moin,

je nach Bedarf und Betriebssystemsprache:
REM erkennt Win7 oder XP
if exist "%systemdrive%\ProgramData" (  

REM Win7
REM deutsches Grundsystem
set "vbspath=%windir%\System32\Printing_Admin_Scripts\de-DE"  

REM englisches Grundsystem
set "vbspath=%windir%\System32\Printing_Admin_Scripts\en-US"  

) else (
REM XP
set "vbspath=%windir%\system32"  
)

REM Löscht alle printer
cscript "%vbspath%\prnmngr.vbs" -x  

REM Löscht Printer Connections
cscript "%vbspath%\prnmngr.vbs" -xc  

REM Löscht lokale Printer
cscript "%vbspath%\prnmngr.vbs" -xo  

Bastle dir zusammen, was du brauchst. Zur Info festangelegt lokale Drucker können möglicherweise nur von Admins gelöscht werden (also vielleicht als Startscript und Loginscript laufen lassen)


Edit:
Habe nun eine Detektion eingebaut, um die OS-Version zu bestimmen. Musst also nur noch die falsche Sprache rauswerfen und unten eben das rauslöschen, was du nicht haben willst.

Gruß
Chris
Member: BibelRaptor
BibelRaptor Feb 13, 2014 at 13:27:02 (UTC)
Goto Top
Die Skripts binde ich dann einfach über den Gruppenrichtlinien-verwaltungs Editor vom Druckserver ein?

Bin relativ neu in dieser Thematik, deswegen verzeiht meine Unwissenheit face-smile
Member: Sheogorath
Sheogorath Feb 13, 2014 updated at 14:20:36 (UTC)
Goto Top
Moin,

also ich vermute mal deutsche Rechner. nun machst du folgendes:
1. erstelle eine Datei mit dem Namen (ist ein Beispiel kannst du nennen wie du willst) "DeletePrinterConnection.bat" dort kommst folgender Code rein:
REM prüft ob bereits ausgeführt
if exist "%appdata%\PrinterCheck.txt" exit  

REM erkennt Win7 oder XP
if exist "%systemdrive%\ProgramData" (  

REM Win7
REM deutsches Grundsystem
set "vbspath=%windir%\System32\Printing_Admin_Scripts\de-DE"  

) else (
REM XP
set "vbspath=%windir%\system32"  
)
REM Löscht Printer Connections
cscript "%vbspath%\prnmngr.vbs" -xc  

REM erstellt Prüfdatei sorgt dafür, dass es nicht nochmal ausgeführt wird
echo %date%>"%appdata%\PrinterCheck.txt"  
Da es einmal sein soll, habe ich noch eine kleine Prüfsequenz eingebaut.

2. öffne deinen GPO Editor. erstelle eine Policy für deine User, bei denen du die Drucker entfernen willst. gehe zu "User Configuration\Windows Settings\Scripts (Logon/Logoff)" dort wählst du Logon hier öffnet sich ein Fenster, unten gibt es Button auf dem Show Files (bei dir vielleicht auf deutsch) steht. da klickst du drauf und legst dein Script rein.

3. oben gibt es nun einen (im Logon Propertys Fenster) Button mit Add... da klickst du drauf, wählst das Script fertig.

damit wäre der Userpart abgehakt

nun zum Computer:
1. erstelle eine Datei mit dem Namen (ist ein Beispiel kannst du nennen wie du willst) "DeletePrinterConnection.bat" dort kommst folgender Code rein:
REM prüft ob bereits ausgeführt
if exist "%programdata%\PrinterCheck.txt" exit  

REM erkennt Win7 oder XP
if exist "%systemdrive%\ProgramData" (  

REM Win7
REM deutsches Grundsystem
set "vbspath=%windir%\System32\Printing_Admin_Scripts\de-DE"  

) else (
REM XP
set "vbspath=%windir%\system32"  
)
REM Löscht lokale Printer !!bitte Prüfen ob gewollt!!!
cscript "%vbspath%\prnmngr.vbs" -xo  

REM erstellt Prüfdatei sorgt dafür, dass es nicht nochmal ausgeführt wird
echo %date%>"%programdata%\PrinterCheck.txt"  
Da es einmal sein soll, habe ich noch eine kleine Prüfsequenz eingebaut.

2. öffne deinen GPO Editor. erstelle eine Policy für deine Computer, bei denen du die Drucker entfernen willst. gehe zu "Computer Configuration\Windows Settings\Scripts (Startup/Shutdown)" dort wählst du Startup hier öffnet sich ein Fenster, unten gibt es Button auf dem Show Files (bei dir vielleicht auf deutsch) steht. da klickst du drauf und legst dein Script rein.

3. oben gibt es nun einen (im Startup Propertys Fenster) Button mit Add... da klickst du drauf, wählst das Script fertig.

Damit wäre alles erledigt. Wichtig ist eben, dass du wirklich prüfst, ob du auch lokal angelegte Drucker entfernen willst oder nur alte Verknüpfungen.

Edit: Variablennamen zu vbspath gewechselt um Komplikationen zu vermeiden.

Gruß
Chris
Member: BibelRaptor
BibelRaptor Feb 13, 2014 at 14:44:35 (UTC)
Goto Top
Ich weiß das alles lokal angelegte Drucker sind. Sehr aufwendige Einrichtungsarbeit mit TCP/IP für jeden User einzeln. Deswegen eben jetzt der Druckserver ;)
Member: Sheogorath
Sheogorath Feb 13, 2014 at 14:50:20 (UTC)
Goto Top
Moin,

dann würde sogar nur der sogar nur der 2. Teil reichen. Probiere es mal an einem Testrechner aus.

Gruß
Chris
Member: BibelRaptor
BibelRaptor Feb 14, 2014 updated at 07:27:23 (UTC)
Goto Top
Testrechner und Testuser habe ich bereits. Allerdings scheint das Skript nicht das zu tun was es soll :/

Vielleicht mach ich auch irgendwas falsch oder hab was vergessen?


Hab jetzt nur den 2.ten Teil aktiv am laufen von deinem vbs-Skript. Doch sobald ich Neustarte und mich mit dem Testuser anmelde, zieht er die 2 Drucker per GPO und der "installierte lokale Drucker" bleibt weiterhin bestehen. Das Skript läuft ja sofort oder muss ich das noch irgendwie aktivieren?

Sorry für die Fragerei immer, bin noch in der Ausbildung ^^
Member: Sheogorath
Sheogorath Feb 14, 2014 at 07:35:03 (UTC)
Goto Top
Moin,

erstmal: das ist ein Batchscript, kein VBScript. Wichtig ist also das deine Datei die Endung ".bat" oder ".cmd" hat, sonst klappt es sowieso nicht. Es werden nur vbs Dateien darin aufgerufen.

Solltest du die Datei richtig benannt haben, prüfe den Pfad zum Script, der in der GPO angezeigt wird, es sollte ein UNC-Pfad sein (erkennst du an \\ am Anfang)

Dann solltest du schauen ob die Datei %programdata%\printerCheck.txt geschrieben wurde. Falls ja löschen, falls nein schaue mal per GPResult (wie du das nutzt solltest du im web finden können oder mit cmd gpresult /?) ob deine GPO überhaupt greift oder ob sie falsch verlinkt ist, zur not lass mal deinen Mentor drüber schauen.

Dann sollte es laufen.

Gruß
Chris