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?

Mitglied: Krigor

Krigor (Level 1) - Jetzt verbinden

24.10.2007, aktualisiert 09:18 Uhr, 2851 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

Vergleich zweier CSV-Dateien über Powershell-Script

Frage von Philipp711Batch & Shell4 Kommentare

Hallo, ich habe eine Verständnisfrage zur "Programmierung" eines Powershell-Scripts. Es geht darum, zwei Listen miteinander zu vergleichen bzw. herauszufinden ...

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

Neue Wissensbeiträge
Windows 10

USB Maus und Tastatur versagen Dienst unter Windows 10

Erfahrungsbericht von hardykopff vor 1 TagWindows 105 Kommentare

Da steht man ziemlich dumm da, wenn der PC sich wegen fehlender USB Tastatur und Maus nicht bedienen lässt. ...

Administrator.de Feedback
Update der Seite: Alles zentriert
Information von Frank vor 1 TagAdministrator.de Feedback18 Kommentare

Hallo User, die größte Änderung von Release 5.8 ist das Zentrieren der Webseite (auf großen Bildschirmen) und ein "Welcome"-Teaser ...

Humor (lol)

WhatsApp-Nachrichten endlich auch per Bluetooth versendbar

Information von BassFishFox vor 2 TagenHumor (lol)4 Kommentare

Genau darauf habe ich gewartet! ;-) Der beliebte Messaging-Dienst WhatsApp erhält eine praktische neue Funktion: Ab dem nächsten Update ...

Google Android

Googles "Android Enterprise Recommended" für Unternehmen

Information von kgborn vor 2 TagenGoogle Android3 Kommentare

Hier eine Information, die für Administratoren und Verantwortliche in Unternehmen, die für die Beschaffung und das Rollout von Android-Geräten ...

Heiß diskutierte Inhalte
Speicherkarten
Vergessliche USB-Sticks?
Frage von hanheikSpeicherkarten14 Kommentare

Ich habe in den letzten Tagen 500 USB-Sticks mit Bilddateien bespielt. Obwohl ich die Dateien mit größter Sorgfalt kopiert ...

Hyper-V
Hyper-V mit altem XEON-Server. Was ist falsch?
Frage von LollipopHyper-V11 Kommentare

Hallo Bin etwas frustriert. Kleinbetrieb, ca. 15 PC's, 2 Stk. Server mit einigen virtuellen PC's für Fernwartung, VaultServer für ...

Windows Server
NTFS Berechtigungen Ordnerstruktur
Frage von hukahu23489Windows Server11 Kommentare

Hallo, ich bin seit kurzem in einer neuen IT-Abteilung und bin über das Berechtigungskonzept des Unternehmens sehr schockiert. Ich ...

Exchange Server
NDR umleiten
Frage von isomasterExchange Server10 Kommentare

Hallo Kollege, ich habe ein Problem mit dem Exchange Server. Wir haben unsere info@ Adresse als Verteilergruppe eingebunden (so ...