Clientname aus Datei auslesen und mit Variable vergleichen
3 geclusterte Windows 2003 Terminalserver
Hallo ich brauche ein VBScript das mir aus einer Datei Clientnamen ausliest und mit der echten Variable %Clientname% vergleicht. Anschliesend werden bestimmten Befehle ausgeführt,z.B Wenn %Clientname% =pcxxxxx1 dann setze variable XY und installiere Drucker XYZ. Das Ganze hat den Sinn weil ich 5 Räume a 20 Terminalclients habe, die sich an 3 geclusterte Windows2003 Terminalserver anmelden, und jeder Raum einen Drucker hat, die eben nur der Benutzer benutzen soll, der auch wirklich in dem Raum angemeldet ist.
Vielen Dank für jede Hilfe
Christian Kuchlmeier
Hallo ich brauche ein VBScript das mir aus einer Datei Clientnamen ausliest und mit der echten Variable %Clientname% vergleicht. Anschliesend werden bestimmten Befehle ausgeführt,z.B Wenn %Clientname% =pcxxxxx1 dann setze variable XY und installiere Drucker XYZ. Das Ganze hat den Sinn weil ich 5 Räume a 20 Terminalclients habe, die sich an 3 geclusterte Windows2003 Terminalserver anmelden, und jeder Raum einen Drucker hat, die eben nur der Benutzer benutzen soll, der auch wirklich in dem Raum angemeldet ist.
Vielen Dank für jede Hilfe
Christian Kuchlmeier
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 8116
Url: https://administrator.de/contentid/8116
Ausgedruckt am: 22.11.2024 um 20:11 Uhr
7 Kommentare
Neuester Kommentar
OK OK .
Wie hast du dir's vorgestellt?????
Hab ich richtig verstanden - du hast 5 * 20 Client's - und 5 Drucker ????
Dann würde ich 5 Dateien machen und in jede der Datei die Clients reinschreiben die diesen Drucker bekommen sollen.
"Printer01.INI"
clientname1
clientname3
clientname7
"Printer02.INI"
clientname2
clientname6
usw.
Dann mit einer batch Datei in den Dateien "printer01.ini" und "printer02.ini" nach %clientname% suchen - und wenn gefunden - verbinden.
Wie hast du dir's vorgestellt?????
Hab ich richtig verstanden - du hast 5 * 20 Client's - und 5 Drucker ????
Dann würde ich 5 Dateien machen und in jede der Datei die Clients reinschreiben die diesen Drucker bekommen sollen.
"Printer01.INI"
clientname1
clientname3
clientname7
"Printer02.INI"
clientname2
clientname6
usw.
Dann mit einer batch Datei in den Dateien "printer01.ini" und "printer02.ini" nach %clientname% suchen - und wenn gefunden - verbinden.
Damit hier nicht nur Hilfe zur Selbsthilfe geleistet wird, eine Anregung.
Ist ein Teil aus einem anderen Script, drum passen die Variablennamen nicht.
Getestet ist es in diesem Zusammenhang auch nicht.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
' Voraussetzungen:
' Je Raum eine INI mit den Clientnamen zeilenweise
' Durchgehende Druckernamen Drucker-1, Drucker-2, Drucker-n
Option Explicit
Dim objFSO, objWshNetwork, objFile
Dim strWorkDir, strText, strLine, strPathFind, strExt, i, strPrintSRV, strPrinter
Const ForReading = 1, ForWriting = 2, ForAppending = 8
strWorkDir = "\\Pfad\zu\RaumINI"
strExt = ".ini"
strText = ""
strPathFind = %CLIENTNAME%
strPrintSRV = "PrintServer"
strPrinter = "Drucker"
Set objFSO = Wscript.CreateObject("Scripting.FileSystemObject")
For i = 1 To 5
strText = strWorkDir & i & strExt
If objFSO.FileExists(strText) Then
Set objFile = objFSO.OpenTextFile(strText, ForReading)
Do Until objFile.AtEndOfStream
strLine = objFile.ReadLine
If strLine = strPathFind Then
Set objWshNetwork = Wscript.CreateObject("WScript.Network")
WshNetwork.AddWindowsPrinterConnection "\\" & strPrintSRV & "\" & strPrinter & i
End If
Loop
objFile.Close
End If
i = i + 1
Next i
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Allerdings möchte ich doch mein Erstaunen zum Ausdruck bringen.
Du administrierst eine Domäne mit 100 Usern, mit Cluster, TS und wer weiß noch was und scheinst hier überhaupt keinen Ansatz gehabt zu haben.
Ist ein Teil aus einem anderen Script, drum passen die Variablennamen nicht.
Getestet ist es in diesem Zusammenhang auch nicht.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
' Voraussetzungen:
' Je Raum eine INI mit den Clientnamen zeilenweise
' Durchgehende Druckernamen Drucker-1, Drucker-2, Drucker-n
Option Explicit
Dim objFSO, objWshNetwork, objFile
Dim strWorkDir, strText, strLine, strPathFind, strExt, i, strPrintSRV, strPrinter
Const ForReading = 1, ForWriting = 2, ForAppending = 8
strWorkDir = "\\Pfad\zu\RaumINI"
strExt = ".ini"
strText = ""
strPathFind = %CLIENTNAME%
strPrintSRV = "PrintServer"
strPrinter = "Drucker"
Set objFSO = Wscript.CreateObject("Scripting.FileSystemObject")
For i = 1 To 5
strText = strWorkDir & i & strExt
If objFSO.FileExists(strText) Then
Set objFile = objFSO.OpenTextFile(strText, ForReading)
Do Until objFile.AtEndOfStream
strLine = objFile.ReadLine
If strLine = strPathFind Then
Set objWshNetwork = Wscript.CreateObject("WScript.Network")
WshNetwork.AddWindowsPrinterConnection "\\" & strPrintSRV & "\" & strPrinter & i
End If
Loop
objFile.Close
End If
i = i + 1
Next i
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Allerdings möchte ich doch mein Erstaunen zum Ausdruck bringen.
Du administrierst eine Domäne mit 100 Usern, mit Cluster, TS und wer weiß noch was und scheinst hier überhaupt keinen Ansatz gehabt zu haben.
Hm, und warum machst du dann nicht gleich eine BatchDatei wie folgt ???
IF "%Clientname%" == "Computername1" CON2PRT /CD \\FILESERVER\PRINTERNAME
IF "%Clientname%" == "Computername2" CON2PRT /CD \\FILESERVER\PRINTERNAME
IF "%Clientname%" == "Computername3" CON2PRT /CD \\FILESERVER\PRINTERNAME
IF "%Clientname%" == "Computername4" CON2PRT /CD \\FILESERVER\PRINTERNAME
usw.
IF "%Clientname%" == "Computername1" CON2PRT /CD \\FILESERVER\PRINTERNAME
IF "%Clientname%" == "Computername2" CON2PRT /CD \\FILESERVER\PRINTERNAME
IF "%Clientname%" == "Computername3" CON2PRT /CD \\FILESERVER\PRINTERNAME
IF "%Clientname%" == "Computername4" CON2PRT /CD \\FILESERVER\PRINTERNAME
usw.