Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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, 2824 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 ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Batch & Shell
Mehrere AD Benutzer aus CSV Datei mit PowerShell erstellen (1)

Frage von windelterrorist zum Thema Batch & Shell ...

Batch & Shell
gelöst PS Werte CSV-Datei in AD Attribut (3)

Frage von lupolo zum Thema Batch & Shell ...

Batch & Shell
gelöst AD-Felder für User mittels Powershell befüllen aus CSV-Datei (2)

Frage von Alex94G zum Thema Batch & Shell ...

VB for Applications
gelöst Bestimmte Spalten aus CSV-Datei auslesen (VBS) (9)

Frage von Gurkenhobel zum Thema VB for Applications ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (27)

Frage von patz223 zum Thema Windows Userverwaltung ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (20)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Windows Netzwerk
Windows 10 RDP geht nicht (18)

Frage von Fiasko zum Thema Windows Netzwerk ...