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

Mitglied: MisterIX

MisterIX (Level 1) - Jetzt verbinden

05.02.2009, aktualisiert 21.04.2009, 5661 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: https://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
Batch & Shell

Skript um Benutzerdaten aus Active Directory auszulesen

Frage von newit1Batch & Shell6 Kommentare

Hallo zusammen, leider habe ich von Skripten wenig Ahnung. Kann mir vielleicht jemand helfen, mittels Skript Benutzerdaten wie Vorname, ...

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 ...

Neue Wissensbeiträge
Windows 10
Zero-Day-Lücke in Microsoft Edge
Information von kgborn vor 1 TagWindows 10

In Microsofts Edge-Browser klafft wohl eine nicht geschlossene (0-Day) Sicherheitslücke im Just In Time Compiler (JIT Compiler) für Javascript. ...

Sicherheit
Microsoft und Skype: Sicherheit
Information von kgborn vor 1 TagSicherheit

Die Tage gab es ja einige Berichte zur Sicherheit des Skype-Updaters. Der Updater von Skype läuft unter dem Konto ...

Datenschutz

Behörden ignorieren Sicherheitsbedenken gegenüber Windows 10

Information von Penny.Cilin vor 2 TagenDatenschutz8 Kommentare

Hallo, passend zum Thema Ablösung LIMUX in München ein Beitrag bei Heise (siehe Link folgend). Behörden ignorieren Sicherheitsbedenken gegenüber ...

Sicherheit
Information Security Hub Munich airport
Information von brammer vor 2 TagenSicherheit

Hallo, Neues Center für Cyber Kriminalität am Münchener Flughafen brammer

Heiß diskutierte Inhalte
DSL, VDSL
Mindestgeschwindigkeiten DSL Telekom
Frage von justlukasDSL, VDSL13 Kommentare

Hallo zusammen, Seit diesem Jahr habe ich Verständnisprobleme mit dem Verhalten der Telekom. Wir haben seit einem Jahr VDSL ...

Switche und Hubs
LANCOM-Switch: Probleme (no link) mit SFP-Modulen?
Frage von THETOBSwitche und Hubs10 Kommentare

Hi zusammen, ich habe folgendes Problem: Und zwar habe ich an einem Standort drei Switche verbaut - LANCOM GS-2326P+, ...

Firewall
RB2011 Firewall Rule eine bestimmte Mac oder IP Adresse nicht zu blockieren
Frage von lightmanFirewall10 Kommentare

Hallo liebes Forum mit ihren Spezialisten. Ich habe meine Firewall so konfiguriert das kein Endgerät ohne meine Speziellen Erlaubnis ...

Humor (lol)
Was könnte man mit einem Server machen? Idee gesucht
Frage von 2SeitenHumor (lol)8 Kommentare

Hey Zusammen Ich habe einen alten HP G2 Rackserver zu Hause rumliegen. 28GB Ram, 1xAMD Prozi mit etwa 2GHz. ...