alkobottle
Goto Top

Drucker nach OU oder Gruppe zuweisen

Drucker nach OU oder Gruppe zuweisen, per GP oder VBS

Hallo Admins,

Ich bin auf der Sucher nach einer Lösung für folgendes Problem:

Da wir in unserem Haus sehr viele Drucker haben und es bisher so ist dass alle Benutzer alle Drucker zugewiesen bekommen (per VBS) dauert die Anmeldung natürlich entsprechend lange.
Nun möchte ich das Anmeldescript so modifizieren, dass die Benutzer die Drucker nach Abteilung zugewiesen bekommen. Also zB if [user ist in gruppe edv] then connect printer1, if [user ist in gruppe buchhaltung] then connect printer2 usw.
Natürlich stehen in manchen Abteilungen auch mehr als ein Drucker.
Was ich bis jetzt habe ist folgendes:

Const IT="cn=gruppe edv"

Set funcUser = WScript.CreateObject("WScript.Network")
Set ADSysInfo = CreateObject("ADSystemInfo")
Set CurrentUser = GetObject("LDAP://" & ADSysInfo.UserName)
strGroups = LCase(Join(CurrentUser.MemberOf))

Dim WshNetwork
Set WshNetwork = WScript.CreateObject("WScript.Network")
If InStr(strGroups,IT) then
WshNetwork.AddWindowsPrinterConnection PrinterPath
PrinterPath = "\\PRINTERSERVER\PRINTER1"
WshNetwork.AddWindowsPrinterConnection PrinterPath
PrinterPath = "\\PRINTERSERVER\PRINTER2"
End if

Leider scheint das nicht so wirklich zu funktionieren und leider hab ich auch noch nicht wirklich viel Ahnung von VBS. Das obige Script ist auch aus dem bisherigen Script zusammenkopiert.
Vielleicht kann mir jemand kurz erklären was ich dazu brauche bzw was ich falsch mache.

Grüße

Content-Key: 80074

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

Printed on: April 19, 2024 at 08:04 o'clock

Member: bastla
bastla Feb 06, 2008 at 15:57:25 (UTC)
Goto Top
Hallo alkobottle!

Soferne Benutzer nur einer Gruppe angehören, wird "Join()" scheitern - versuche es als Ersatz für die Zeile
strGroups = LCase(Join(CurrentUser.MemberOf))
eher so:
aGroups = CurrentUser.MemberOf
If IsArray(aGroups) Then
	strGroups = LCase(Join(aGroups))
Else
	strGroups = LCase(aGroups)
End If

Weiters stimmt die Reihenfolge der Zeilen für die Druckerzuweisung nicht: Damit "PrinterPath" verwendet werden kann, muss die Zuweisung vor "AddWindowsPrinterConnection" erfolgen:
PrinterPath = "\\PRINTERSERVER\PRINTER1"  
WshNetwork.AddWindowsPrinterConnection PrinterPath

PrinterPath = "\\PRINTERSERVER\PRINTER2"  
WshNetwork.AddWindowsPrinterConnection PrinterPath

Ansonsten wäre es auch hilfreich, genauere Fehlerbeschreibungen zu erhalten - falls Du "On Error Resume Next" verwendest, solltest Du diese Zeile während der Testphase auskommentieren ...

Grüße
bastla
Member: Egbert
Egbert Feb 06, 2008 at 17:10:22 (UTC)
Goto Top
Hallo,

wenn Du eoin wenig wartest kannst Du das mit Grproup Policy Preferneces von MS machen, müsste die tage zum Download bereit stehen. ISt der frühere PolicyMaker von Desktopstandard und damit war das wunderbar über Gruppenrichtlinien konfigurierbar.

http://blogs.technet.com/nmercer/archive/2007/11/19/group-policy-prefer ...

Gruß
Egbert
Member: alkobottle
alkobottle Feb 07, 2008 at 08:19:09 (UTC)
Goto Top
Danke für eure Hilfe! Konnte die Sache jetzt lösen! face-smile

Hier die Lösung:
Dim funcUser
Dim Username
Dim myConnectionString
Const IT = "cn=Gruppe EDV"  
Set funcUser = WScript.CreateObject("WScript.Network")  
Set ADSysInfo = CreateObject("ADSystemInfo")  
Set CurrentUser = GetObject("LDAP://" & ADSysInfo.UserName)  
aGroups = CurrentUser.MemberOf
If IsArray(aGroups) Then
	strGroups = LCase(Join(aGroups))
Else
	strGroups = LCase(aGroups)
End If

Set oshell = CreateObject("Shell.Application")   

If InStr(UCase(strGroups), UCase(IT)) <> 0 Then 

PrinterPath = "\\PRINTSERVER\PRITNER1"  
WshNetwork.AddWindowsPrinterConnection PrinterPath

else

msgbox "not member of IT"  

End if

Grüße