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

AD, W2003Svr, Drucker aus CSV-Datei per Script dem Host zuordnen?

Frage Netzwerke Netzwerkmanagement

Mitglied: Krigor

Krigor (Level 1) - Jetzt verbinden

24.10.2007, aktualisiert 09:18 Uhr, 2845 Aufrufe, 1 Kommentar

Hallo alle zusammen,

Die Gegebenheiten sind diese:
Ein Netzwerk, Windows 2003 R2 Domänencontroller und Active Directory.
Diverse Benutzergruppen in diversen OUs.
Nur Netzwerkdrucker, keine lokalen Drucker.

Die Problemstellung ist folgende:
Um die Netzwerkdrucker den Benutzern zur Verfügung zu stellen gibt es eine CSV-Datei in der
alle Host-Namen (etwa 300) und alle Drucker (etwa 140) zentral eingetragen sind, und zwar nach folgendem Muster:
Host-Name; Drucker1; Drucker2; Drucker3; Drucker4; Drucker5
Cronos; Dr010203; Dr020304; Dr040506; Dr050607; Dr060708
Torsos; Dr908070; Dr807060; Dr706050; Dr605040; Dr504030
und so weiter...
Die Hostnamen und die Druckernamen sind auf dem DHCP hinterlegt sowie DNS ist auch funktionstüchtig.
Jetzt kommt der Moment, wo der Frosch ins Wasser rennt:
Immer wenn sich ein Benutzer mit seinem Computer anmeldet soll ein Script gestartet werden,
das den Hostnamen des Computers der sich gerade anmeldet ermittelt und diesen dann in der CSV-Datei
sucht und die dahinterstehenden Drucker verbindet. Der erste in der CSV-Datei stehende Drucker soll
automatisch zum Standarddrucker werden. Also z.B. meldet sich ein beliebiger Benutzer an Computer
Cronos an soll er den Drucker Dr010203 als Standarddruckerzugewiesen bekommen und die
anderen Drucker zusätzlich.
Was sich hier grundlegend von allen bisher im Netz zu findenden Anleitungen unterscheidet ist der Fakt,
daß sich die Druckerzuweisung NICHT auf den Benutzer bezieht, sondern auf den Computernamen.
Der zweite Fakt ist, daß die Vorgabe besteht, keinerlei Fremdsoftware zu nutzen, es soll alles mit
Bordmitteln von Windows2003Server realsiert werden.
Der dritte Fakt ist, mir läuft die Zeit davon und ich habe nicht die Möglichkeit noch länger herumzuexperimentieren.

Ich habe schon etwas mit WSH experimentiert und ein Script erstellt, allerdings ist das ziemlicher Spaghetti-
Code, wie man wohl sagt und als zweites Problem stellt sich mir die Tatsache in den Weg, daß ich mit
Windows, AD und vor allem WSH keinerlei Erfahrungen habe, quasi Neuling bin.
Als mein Script list zwar den Computernamen des "Anmelder-Host" richtig aus und findet auch die passende
Zeile in der CSV-Datei, aber beim Vergleich beider Namen und der Druckerzuweisung hört es dann aber auf.

Ich bemühe mich, den Code hier schnellstmöglich zu posten.
Möglicherweise hat jemand eine zündende Idee.
Persönlich finde ich es auch nicht übel, alle Drucker zentral in einer CSV-Datei zu "verwalten".

Für meinen ersten Beitrag hier, ganz schön viel, ich weis, aber hier ist SOS angesagt.

Viele Grüße,
Krigor
Mitglied: Krigor
24.10.2007 um 09:18 Uhr
Hier nun mein "Script".

01.
'*********************************************************************** 
02.
' * * * * * * * * * * * * * * * * * * * * * * * * * * * 
03.
'*********************************************************************** 
04.
'*	 Plattform:	Windows2003Server, x86		                            * 
05.
'*	 Umgebung:	WindowsScriptingHost		                            * 
06.
'*	 Dateiname:	PrinCon.vbs			                            * 
07.
'*	 Arbeitstitel:	wsh_playground_6.vbs			            * 
08.
'*	 Funktion:		Verbinde alle Drucker zu einem der Domain	            * 
09.
'*                              	gehoerenden Host, setze den Standarddrucker (CSV)        * 
10.
'*			ACHTUNG: Computerbezogen, nicht Benutzerbezogen !!    * 
11.
'*	 Datum:		22. Oktober 2007			                             * 
12.
'*********************************************************************** 
13.
 
14.
' ===== legeVariablen explicit fest 
15.
OPTION EXPLICIT	 
16.
' ===== Konstanten definieren 
17.
CONST CSV_ORDNER = "Z:\Eigene Dateien\_code_bin\" 
18.
CONST CSV_DATEI = "prn-csv.csv" 
19.
CONST ForReading = 1 
20.
' ===== Variablen deklarieren 
21.
DIM obj_NetHost, obj_NetPrnServer, WSHShell, FSO, obj_FSO, obj_fileExist 
22.
DIM FileIn, FileOut, TXT, TXT2 
23.
DIM Ar_Host, Ar_Prn, Ar_Prn0, Ar_Prn1, Ar_Prn2, Ar_Prn3, Ar_Prn4  
24.
DIM host_current, host_fromCSV 
25.
PUBLIC status1, status2, status3, status4, status5, status6, status7 
26.
 
27.
' ===== erzeuge ein Netzwerk-Objekt 
28.
SET obj_NetHost = WScript.CreateObject ("WScript.Network") 
29.
' ===== check computername here 
30.
host_current = ""  
31.
DO 
32.
	host_current = obj_NetHost.ComputerName 
33.
LOOP WHILE (host_current="") 
34.
 
35.
SET obj_FSO = CreateObject("Scripting.FileSystemObject") 
36.
SET obj_fileExist = obj_FSO.GetFile(CSV_DATEI) 'zum pruefen, ob Datei leer ist 
37.
IF obj_fileExist.Size > 0 THEN	 
38.
	'########################  HOT Code here: ######################## 
39.
	SET WSHShell = WScript.CreateObject("WScript.Shell") 
40.
	SET FSO = CreateObject("Scripting.FileSystemObject") 
41.
	SET FileIn = FSO.OpenTextFile(CSV_DATEI,1,TRUE) 
42.
	 
43.
	status1 = 0	 
44.
	DO WHILE NOT (FileIn.atEndOfStream) 
45.
		TXT = FileIn.ReadLine 
46.
		Ar_Host = Split(TXT,";",-1,1) 
47.
		host_fromCSV = Ar_Host(0) 
48.
		Ar_Prn = Split(TXT,";",-1,1) 
49.
		Ar_Prn0 = Trim(Ar_Prn(1)) 
50.
		Ar_Prn1 = Trim(Ar_Prn(2)) 
51.
		Ar_Prn2 = Trim(Ar_Prn(3)) 
52.
		Ar_Prn3 = Trim(Ar_Prn(4)) 
53.
		Ar_Prn4 = Trim(Ar_Prn(5)) 
54.
		IF UCase(Trim(host_fromCSV)) > UCase(Trim(host_current)) THEN 
55.
		   WScript.Echo UCase(host_current) & " <---------> " & UCase(host_fromCSV) & vbCRLF & _ 
56.
						 "--------------------------------------------------------" & vbCRLF & _ 
57.
						 "Drucker 1: " & Ar_Prn0 & vbCRLF & _ 
58.
						 "Drucker 2: " & Ar_Prn1 & vbCRLF & _ 
59.
						 "Drucker 3: " & Ar_Prn2 & vbCRLF & _ 
60.
						 "Drucker 4: " & Ar_Prn3 & vbCRLF & _ 
61.
						 "Drucker 5: " & Ar_Prn4 
62.
			status1 = 1 
63.
			EXIT DO 
64.
		END IF 
65.
	LOOP 
66.
	 
67.
' ===== Auswertung des Einlesens der CSV-Datei	 
68.
SELECT CASE status1 
69.
	CASE 0 
70.
		WScript.Echo "Passender Eintrag in CSV-Datei nicht gefunden!" & vbCRLF _ 
71.
				   & "Druckerzuweisung wird abgebrochen!" 
72.
	CASE 1 
73.
		WScript.Echo "Drucker: " & Ar_Prn0 &" zuweisen?" 
74.
		SET obj_NetPrnServer = WScript.CreateObject("WScript.Network") 
75.
		obj_NetPrnServer.AddPrinterConnection "LPT1", "\\print\" & Ar_Prn0 & ""   'DR102012" 
76.
		'obj_NetServer.RemovePrinterConnection "LPT1", TRUE, TRUE 
77.
		 
78.
	CASE ELSE 
79.
		WScript.Echo "Schwerer Fehler!" 
80.
		objNetwork.RemovePrinterConnection 
81.
END SELECT 
82.
	 
83.
	'########################  End HOT Code here ######################## 
84.
	 
85.
ELSE 
86.
	Wscript.Echo "Die Datei > " & CSV_DATEI & " < ist leer oder existiert nicht." 
87.
END IF 
88.
 
89.
WScript.Quit 
90.
'********************************************************************* 
91.
'***                                                      E N D E                                                             *** 
92.
'*********************************************************************
Weiter komme ich einfach nicht.
Mein Gedanke war, die CSV-Datei öffnen, den Inhalt (zeilenweise) in ein Array einzulesen, dann das erste Element (also den Inhalt der ersten Spalte) mit dem ausgelesenen Hostnamen zu vergleichen und dann die Druckerzuordnung zu starten und im dritten Schritt den Standarddrucker zuzuweisen.
Oder hat jemand vielleicht eine andere Idee zur Herangehensweise?

Grüße,
Krigor
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
CSV Dateien auswerten mit Script
gelöst Frage von Crank69Batch & Shell8 Kommentare

Hallo Leute, habe ein Problem und hoffe ihr könnt mir helfen. Ich hoffe das die Bilder helfen bei meinem ...

Batch & Shell
Mehrere AD Benutzer aus CSV Datei mit PowerShell erstellen
Frage von windelterroristBatch & Shell1 Kommentar

Hallo Admins :) Mein Skript soll mehrere AD User aus einer CSV Datei per PowerShell erstellen. Soweit funktioniert das ...

Batch & Shell
PS Werte CSV-Datei in AD Attribut
gelöst Frage von lupoloBatch & Shell3 Kommentare

Hallo Leute, ich komm grad irgendwie nicht weiter. Wir müssten für jeden AD Benutzer ein AD-Attribut (scanPath) mit dem ...

Batch & Shell
AD User mit CSV Datei Vergleichen und Webseite befüllen
gelöst Frage von IT-WurzelBatch & Shell11 Kommentare

Hallo liebe Community, ich sehe schon den Wald vor lauter Bäumen nicht mehr habe mir nach einigen Anregungen hier ...

Neue Wissensbeiträge
Viren und Trojaner

Deaktivierter Keylogger in HP Notebooks entdeckt

Information von bitcoin vor 17 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 21 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 ...

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

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

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