thunderwave
Goto Top

mit VBScript Datei auslesen und anhand des Inhalts Drucker mappen

Hallo!

Folgendes Problem: Ich möchte mit einem VBScript Drucker in Abhängigkeit von Gruppenzugehörigkeiten mappen. Da bei uns die Abteilungen jedoch häufig ihre Drucker wechseln bzw. neue Drucker hinzukommen, möchte ich nicht jedes Mal das Script pflegen müssen.
Deshalb möchte ich jetzt vom VBScript eine Datei z.B. CSV oder Textdatei auslesen lassen und die Drucker je nach Inhalt dieser Datei verbinden.
Der Inhalt der CSV oder Textdatei sollte einfahc wie folgt aussehen:

Gruppe1;\\Printserver\CanoniR5000
Gruppe2;\\Printserver\CanonColor
Gruppexyz;\\Printserver\Druckerxyz

Die Funktion ohne auslesen einer Datei habe ich schon fertig und die funktioniert auch (siehe unten). Wer kann mir weiterhelfen?!?
P.S. Die "Drucker-und-Gruppen-Datei" will ich auf einem zentralen Share ablegen.

Jetzt schon Vielen Dank!!!

Grüße Jochen


'region Script Settings  
'<ScriptSettings xmlns="http://tempuri.org/ScriptSettings.xsd">  
'  <ScriptPackager>  
'    <process>cscript.exe</process>  
'    <arguments />  
'    <extractdir>%TEMP%</extractdir>  
'    <files />  
'    <usedefaulticon>true</usedefaulticon>  
'    <showinsystray>false</showinsystray>  
'    <altcreds>false</altcreds>  
'    <efs>true</efs>  
'    <ntfs>true</ntfs>  
'    <local>false</local>  
'    <abortonfail>true</abortonfail>  
'    <product />  
'    <version>1.0.0.1</version>  
'    <versionstring />  
'    <comments />  
'    <includeinterpreter>false</includeinterpreter>  
'    <forcecomregistration>false</forcecomregistration>  
'    <consolemode>false</consolemode>  
'    <EnableChangelog>false</EnableChangelog>  
'    <AutoBackup>false</AutoBackup>  
'  </ScriptPackager>  
'</ScriptSettings>  
'endregion  

Option Explicit ' Force explicit declarations  
'  
' Variables  
'  
Dim WSHNetwork 'Variable zum Drucker verbinden  
Dim FSO
Dim strUserName ' Variable für Benutzername  
Dim strUserDomain ' Variable für Domäne  
Dim ObjGroupDict ' Dictionary of groups to which the user belongs  

Set WSHNetwork = WScript.CreateObject("WScript.Network")  
Set FSO = CreateObject("Scripting.FileSystemObject")  
'  
' Wait until the user is really logged in...  
'  
strUserName = ""  
While strUserName = ""  
WScript.Sleep 100 ' 1/10 th of a second  
strUserName = WSHNetwork.UserName
Wend
strUserDomain = WSHNetwork.UserDomain

' Gruppenmitgliedschaft wird ausgelesen.   

Set ObjGroupDict = CreateMemberOfObject(strUserDomain, strUserName)


'---------------------------------------------------------------------------------  

If MemberOf(ObjGroupDict, "Gruppe1") Then  
 
'Netzwerkdrucker werden verbunden wenn Gruppenmitgliedschaft erfüllt ist.  

WshNetwork.AddWindowsPrinterConnection "\\Printserver\CanoniR5000"  
WshNetwork.SetDefaultPrinter "\\\\Printserver\CanoniR5000"  
WScript.echo "Drucker CanoniR5000 wurde verbunden."  

Else
WScript.echo "Drucker CanoniR5000 wurde nicht verbunden"  
End If


'----------------------------------------------------------------------------------  


If MemberOf(ObjGroupDict, "Gruppe2") Then  
 
'Netzwerkdrucker werden verbunden wenn Gruppenmitgliedschaft erfüllt ist.  

WshNetwork.AddWindowsPrinterConnection "\\Printserver\CanonColor"  
WshNetwork.SetDefaultPrinter "\\Printserver\CanonColor"  
WScript.echo "Drucker CanonColor wurde verbunden."  

Else
WScript.echo "Drucker CanonColor wurde nicht verbunden"  
End If


'----------------------------------------------------------------------------------  



Function MemberOf(ObjDict, strKey)
' Given a Dictionary object containing groups to which the user  
' is a member of and a group name, then returns True if the group  
' is in the Dictionary else return False.   
'  
' Inputs:  
' strDict - Input, Name of a Dictionary object  
' strKey - Input, Value being searched for in  
' the Dictionary object  
' Sample Usage:  
'  
' If MemberOf(ObjGroupDict, "DOMAIN ADMINS") Then  
' wscript.echo "Is a member of Domain Admins."  
' End If  
'  
'  
MemberOf = CBool(ObjGroupDict.Exists(strKey))

End Function


Function CreateMemberOfObject(strDomain, strUserName)
' Given a domain name and username, returns a Dictionary  
' object of groups to which the user is a member of.  
'  
' Inputs:  
'  
' strDomain - Input, NT Domain name  
' strUserName - Input, NT username  
'  
Dim objUser, objGroup

Set CreateMemberOfObject = CreateObject("Scripting.Dictionary")  
CreateMemberOfObject.CompareMode = vbTextCompare
Set objUser = GetObject("WinNT://" _  
& strDomain & "/" _  
& strUserName & ",user")  
For Each objGroup In objUser.Groups
CreateMemberOfObject.Add objGroup.Name, "-"  
Next
Set objUser = Nothing

End Function

Content-Key: 75372

Url: https://administrator.de/contentid/75372

Ausgedruckt am: 29.03.2024 um 02:03 Uhr