Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Skript zur automatischen Verteilung von Druckern anhand von Computerkonten in Active Directory Gruppen

Frage Microsoft Windows Netzwerk

Mitglied: MisterIX

MisterIX (Level 1) - Jetzt verbinden

05.02.2009, aktualisiert 21.04.2009, 5644 Aufrufe, 4 Kommentare

In großen Firmen ist es praktisch Drucker anhand von Computerkonten zu verteilen, da so immer Drucker in der nähe des Rechners gemappt werden können, auch wenn Leute aus unterschiedlichen Abteilungen sich anmelden.
Nur ab Server 2003 R2 kann man das über Active Directory lösen. Alle älteren Serverversionen (also auch Server 2003) unterstützen dies nicht. Daher habe ich ein Skript geschrieben, das mit der Freeware Kixtart dieses Problem löst, indem es prüft ob Computerkonten Teil einer bestimmten Active Directory Gruppe sind.

Die Kix32.exe und das Skript müssen im Netlogon Ordner des Domänencontrollers liegen.

Aus einer normalen Batch kann das Skript dann wie folgend aufgerufen werden:

START /W \\server\netlogon\KiX32.exe \\server\netlogon\Drucker.kix

Schreibt ruhig wenn es Euch gefällt.

Gruß,

MisterIX

Hier das Skript (in Textdatei einfügen, anpassen und in Drucker.kix umbenennen):

01.
;************************************************************Schnipp*************************************************************** 
02.
 
03.
$Version =1 
04.
 
05.
SetConsole("Hide") 
06.
 
07.
 
08.
;******************************************************************************************************* 
09.
;*In diesen Arrays sind für jeden Druckerbereich die aktuellen Drucker eingtragen. (Druckergruppen)    * 
10.
;*Neue Drucker oder Namensänderungen können mit Ihrem FREIGABENAMEN eingetragen werden.                * 
11.
;*Der Stern zeigt an, dass dannach der INSTALLATIONSNAME des Standarddruckers kommt                    *          
12.
;******************************************************************************************************* 
13.
 
14.
$Buchhaltungsdrucker = "Versand_KYO_FS3900N_PCL", "*", "Versand_SWLaser" 
15.
 
16.
 
17.
 
18.
$Einkaufsdrucker = "QM_OKI5750_PCL6", "Einkauf_CAN_IR1022IF_PCL6","Einkauf_HP_BIJ2230_PCL5", "*", "Einkauf_Laserfax" 
19.
 
20.
 
21.
 
22.
;************************************************************************************ 
23.
;hier bitte den Printserver eintragen von dem die Drucker installiert werden sollen!* 
24.
;************************************************************************************ 
25.
 
26.
 
27.
$Printserver= "\\Printserver1" 
28.
 
29.
;************************************************************************************ 
30.
 
31.
 
32.
  
33.
$Druckinstall=0 
34.
 
35.
;*********************************** Registry auslesen ****************************************************************** 
36.
 
37.
$Aktuell = ReadValue("HKEY_CURRENT_USER\Printers\Druckerinstallation", "Version") 
38.
 
39.
;*********************************** aktuelle Druckgruppe ermitteln****************************************************** 
40.
 
41.
$PrintGroup = PrinterGroupID 
42.
 
43.
if $PrintGroup=""  
44.
 
45.
 sleep 10  
46.
 $PrintGroup = PrinterGroupID  
47.
 
48.
endif ;***********Manchmal geht die Anmeldung zu schnell********** 
49.
 
50.
 
51.
 
52.
;******************Achtung : hier den Domänennamen angeben!************************************************************** 
53.
 
54.
IF ComputerInGroup (noprint, Domäne) goto ende endif ; **** Computer ist Teil der Gruppe noprint und wurde von Druckerverteilung ausgeschlossen ***  
55.
 
56.
 
57.
;************************************ Erstinstallation ****************************************************************** 
58.
 
59.
 
60.
 
61.
IF $Aktuell=0  
62.
   
63.
  WriteValue("HKEY_CURRENT_USER\Printers\Druckerinstallation","Version", $Version,  "REG_MULTI_SZ") 
64.
  WriteValue("HKEY_CURRENT_USER\Printers\Druckerinstallation","Gruppe", $PrintGroup,  "REG_MULTI_SZ") 
65.
 
66.
endif 
67.
 
68.
;*********************************** Registry auslesen ****************************************************************** 
69.
 
70.
 
71.
$PrintGroupR= ReadValue("HKEY_CURRENT_USER\Printers\Druckerinstallation", "Gruppe") 
72.
 
73.
IF $Version<>$Aktuell or $Printgroup<>$PrintgroupR 
74.
 
75.
messagebox("Die Druckerinstallation muss upgedated werden ! Version: "+$Aktuell+ " nach Version: "+$Version+" Druckgruppe: "+$PrintGroupR+" nach Druckgruppe: "+$Printgroup, "Drucker updaten !",016,0) 
76.
 
77.
 
78.
WriteValue("HKEY_CURRENT_USER\Printers\Druckerinstallation","Version", $Version,  "REG_MULTI_SZ") 
79.
WriteValue("HKEY_CURRENT_USER\Printers\Druckerinstallation","Gruppe", $Printgroup,  "REG_MULTI_SZ") 
80.
   
81.
 
82.
;************************************************************************************** 
83.
;hier bitte den Printserver eintragen von dem die Drucker deinstalliert werden sollen!* 
84.
;************************************************************************************** 
85.
 
86.
DeleteAllPrinters(AlterPrintserver)   
87.
 
88.
;********************Hier nochmals den neuen Printserver eintragen!******************** 
89.
 
90.
 
91.
DeleteAllPrinters(Printserver)  
92.
 
93.
? "Computername:" +@wksta 
94.
 
95.
;*********************************************Druckerverbinden (Druckgruppe (im ADS), Druckergruppe)****************** 
96.
 
97.
 
98.
Druckerverbinden(DruckBuchhaltung, $Buchhaltungsdrucker,$Printserver) 
99.
 
100.
 
101.
Druckerverbinden(DruckEinkauf, $Einkaufsdrucker,$Printserver) 
102.
 
103.
 
104.
;********************************************************************************************************************************************* 
105.
 
106.
If $Druckinstall=0 
107.
 
108.
  messagebox("Der Rechner ist nicht Mitglied einer Druckgruppe !", "Drucker nicht installiert...",016,0) 
109.
 
110.
else 
111.
 
112.
  messagebox("Ihre Drucker wurden neu verbunden mit dem Printserver: "+$Printserver, "Drucker wurden installiert. MfG, MisterIX 2009",064,0) 
113.
 
114.
Endif 
115.
 
116.
 
117.
Else 
118.
 
119.
 
120.
;messagebox("Die Druckerinstallation muss nicht upgedated werden ! Version: "+$Aktuell, "Drucker aktuell !",064,0) 
121.
 
122.
Endif 
123.
 
124.
:ende 
125.
Exit 
126.
 
127.
;**********************************************************Hier kommen die Funktionen !*********************************************************** 
128.
 
129.
 
130.
Function ComputerInGroup($group,optional $Domain)  
131.
 
132.
  Dim $oGrp  
133.
 
134.
  if not $domain           
135.
    $domain=@domain          
136.
  endif  
137.
   
138.
  $oGrp = GetObject("WinNT://" + $domain + "/"  + $group + ",group" )  
139.
  if @error        
140.
   exit 1           
141.
  endif  
142.
 
143.
  if $oGrp.IsMember("WinNT://" + $domain + "/"  + @wksta + "$$" )  		         $ComputerInGroup=1  
144.
   else 			 
145.
     $ComputerInGroup=0  
146.
   endif  
147.
 
148.
endfunction  
149.
 
150.
Function DeleteAllPrinters($server) 
151.
? "Funktion aufgerufen mit:"+$server 
152.
sleep 1 
153.
 
154.
$Index = 0 
155.
$TempPrinter = "" 
156.
 
157.
;Erstellt eine Liste mit allen installierten Druckern 
158.
 
159.
Dim $PrinterArray[40] 
160.
:Loop 
161.
If @ERROR=0 
162.
$TempPrinter = $TempPrinter + EnumValue("HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\PrinterPorts",$Index) + "," 
163.
$Index = $Index + 1 
164.
GoTo "Loop" 
165.
EndIf 
166.
 
167.
$TempPrinter = Trim($TempPrinter) 
168.
$Length = Len("$TempPrinter") - 2 
169.
$TempPrinter = Left("$TempPrinter","$Length") 
170.
$PrinterArray = Split("$TempPrinter",",") 
171.
 
172.
 
173.
;trennt alle Netzwerkdrucker 
174.
 
175.
For $Count = 0 to $Index-2 
176.
$Temp=$PrinterArray[$Count] 
177.
? $Temp+", "+$server 
178.
IF INSTR("$Temp","$server")<>0 
179.
$rc=DelPrinterConnection ($PrinterArray[$Count]) 
180.
Endif 
181.
Next 
182.
 
183.
 
184.
Endfunction 
185.
*********************************************************Achtung! Hier die im ADS angelegten Druckgruppen eintragen!******************** 
186.
Function PrinterGroupID 
187.
 
188.
$ID=0 
189.
 
190.
;IF ComputerInGroup(Druck****,Domaene) $ID=$ID+1 Endif 
191.
 
192.
;IF ComputerInGroup(Druck****,Domaene) $ID=$ID+2 Endif 
193.
 
194.
;IF ComputerInGroup(Druck****,Domaene) $ID=$ID+4 Endif 
195.
 
196.
;IF ComputerInGroup(Druck****,Domaene) $ID=$ID+8 Endif 
197.
 
198.
;IF ComputerInGroup(Druck****,Domaene) $ID=$ID+16 Endif 
199.
 
200.
;IF ComputerInGroup(Druck****,Domaene) $ID=$ID+32 Endif 
201.
 
202.
;IF ComputerInGroup(Druck****,Domaene) $ID=$ID+64 Endif 
203.
 
204.
IF ComputerInGroup(DruckEinkauf,Domaene) $ID=$ID+128 Endif 
205.
 
206.
;IF ComputerInGroup(Druck****,Domaene) $ID=$ID+256 Endif 
207.
 
208.
;IF ComputerInGroup(Druck****,Domaene) $ID=$ID+512 Endif 
209.
 
210.
IF ComputerInGroup(DruckBuchhaltung,Domaene) $ID=$ID+1024 Endif 
211.
 
212.
;IF ComputerInGroup(Druck****,Domaene) $ID=$ID+2048 Endif 
213.
 
214.
;IF ComputerInGroup(Druck****,Domaene) $ID=$ID+4096 Endif 
215.
 
216.
;IF ComputerInGroup(Druck****,Domaene) $ID=$ID+8192 Endif 
217.
 
218.
IF ComputerInGroup(noprint,Domaene) $ID=$ID+16384 Endif ;************** die Gruppe noprint wird im ADS angelegt und dient zum ausschliessen von Rechnern aus der Druckerverteilung (ZB. Server) 
219.
 
220.
;? "Dezimale ID: "+$ID 
221.
 
222.
$PrinterGroupID=$ID 
223.
 
224.
Endfunction 
225.
 
226.
 
227.
Function Druckerverbinden($Druckgruppe, $Druckergruppe, $Print) 
228.
 
229.
$X=0 
230.
 
231.
;******************Achtung : hier nochmals den Domänennamen angeben!******************************************************* 
232.
 
233.
IF ComputerInGroup($Druckgruppe,Domaene) 
234.
 
235.
? "Computer ist Mitglied der Druckergruppe: "+$Druckgruppe+"   ! " 
236.
 
237.
Do 
238.
 
239.
If $Druckergruppe[$x]<>"*" 
240.
 
241.
   ;? "Drucker "+ $Print+"\"+$Druckergruppe[$x]+" wird instaliert !! " 
242.
   
243.
   ADDPrinterConnection($Print+"\"+$Druckergruppe[$x]) 
244.
   
245.
   $x=$x+1 
246.
  
247.
Endif 
248.
 
249.
Until $Druckergruppe[$x]="*" 
250.
 
251.
$Druckinstall=1 
252.
 
253.
;? "Standard: "+$Print+"\"+$Druckergruppe[$x+1] 
254.
 
255.
SetDefaultPrinter($Print+"\"+$Druckergruppe[$x+1]) 
256.
 
257.
 
258.
Endif 
259.
 
260.
Endfunction 
261.
 
262.
;***************************************************************Schnapp******************************************** 
263.
 
Mitglied: dog
05.02.2009 um 14:54 Uhr
BITTE schau dir mal die Formatierungshilfe an: http://www.administrator.de/helpsystem/detail.php?idx=20#toc27
Bitte warten ..
Mitglied: MisterIX
05.02.2009 um 15:47 Uhr
Gut das mit der Quellcodeformatierung. Danke für den Hinweis.
Bitte warten ..
Mitglied: MisterIX
05.02.2009 um 15:48 Uhr
Übrigens solltest Du die Uhr an Deinem Rechner mal stellen... ;)
Bitte warten ..
Mitglied: MisterIX
06.02.2009 um 11:53 Uhr
Achtung habe in Zeile 43 noch eine kleine Änderung vorgenommen:

Es muss heissen if $PrintGroup="" anstatt if $PrintGroup="0" ansonsten funktioniert die Wartepause nicht, die eingehalten werden soll, wenn keine Druckgruppe vom DC ermittelt werden kann.
Bitte warten ..
Ähnliche Inhalte
Windows Server
Druck-Server im Active Directory
Frage von skullbringerWindows Server16 Kommentare

Wir sind gerade dabei, einen neuen Druckserver mit Windows Server 2012 R2 aufzubauen. Der Server ist installiert, die Rolle ...

Exchange Server
Active Directory verschachtelte Gruppen - Verteilerliste
gelöst Frage von SKHROITExchange Server6 Kommentare

Hallo liebe Mitglieder, ich benötige eine AD Gruppe Global (Sicherheit(Gruppe 1)) die Mitglied einer AD Gruppe Universal (Sicherheit(Gruppe 2)) ...

Outlook & Mail
Automatische Einrichtung Outlook mit Active Directory
gelöst Frage von agowa338Outlook & Mail10 Kommentare

Hallo, Wir haben in der Firma Outlook 2013 und 2010, ich habe versucht, die E-Mail Adressen für die Benutzer ...

Windows Server
Active Directory Preferences Drucker mit Zielgruppenordnung
Frage von u0206084Windows Server3 Kommentare

Hallo Kollegen, ich bin zur Zeit an der Fehlersuche beim oben genannten Thema und kann diesen nicht lokalisieren. Über ...

Neue Wissensbeiträge
Viren und Trojaner

Deaktivierter Keylogger in HP Notebooks entdeckt

Information von bitcoin vor 10 StundenViren und Trojaner1 Kommentar

Ein Grund mehr warum man Vorinstallationen der Hersteller immer blank bügeln sollte Der deaktivierte Keylogger findet sich im vorinstallierten ...

Router & Routing

Lets Encrypt kommt auf die FritzBox

Information von bitcoin vor 14 StundenRouter & Routing

In der neuesten Labor-Version der FB7490 integriert AVM unter anderem einen Let's Encrypt Client für Zugriffe auf das Webinterface ...

Internet

Was nützt HTTPS, wenn es auch von Phishing Web-Seiten genutzt wird

Information von Penny.Cilin vor 3 TagenInternet17 Kommentare

HTTPS richtig einschätzen Ob man eine Webseite via HTTPS aufruft, zeigt ein Schloss neben der Adresse im Webbrowser an. ...

Webbrowser

Bugfix für Firefox Quantum released - Installation erfolgt teilweise nicht automatisch!

Erfahrungsbericht von Volchy vor 4 TagenWebbrowser8 Kommentare

Hallo zusammen, gem. dem Artike von heise online wurde mit VersionFirefox 57.0.1 sicherheitsrelevante Bugs behoben. Entgegen der aktuellen Veröffentlichung ...

Heiß diskutierte Inhalte
Batch & Shell
Trusted Sites für alle User auf dem PC einpflegen
Frage von xXTaKuZaXxBatch & Shell12 Kommentare

Aufgabestellung: Es sollen auf 1 PC (bzw. mehreren PCs) vertrauenswürdige Sites per Powershell eingetragen werden, die für alle User ...

Vmware
DOS 6.22 in VMWare mit CD-ROM
gelöst Frage von hesperVmware10 Kommentare

Hallo zusammen! Ich hab ein saublödes Problem. Es ist eine VMWare mit DOS 6.22 zu erstellen auf dem ein ...

Voice over IP
Telefonstörung - Ortsrufnummern kein Verbindungsaufbau
Frage von Windows10GegnerVoice over IP10 Kommentare

Hallo, sowohl bei uns als auch beim Opa ist es über VoIP nicht möglich Ortsrufnummern anzurufen. Es kommt nach ...

Cloud-Dienste
PIM als SaaS Nutzungsgebühr
Frage von vanTastCloud-Dienste8 Kommentare

Moin, wir haben uns ein PIM (Product Information Management) nach unseren Ansprüchen für viel Geld als SaaS-Lösung bauen lassen. ...