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
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 75372
Url: https://administrator.de/contentid/75372
Ausgedruckt am: 26.11.2024 um 16:11 Uhr