Loginscript mit Gruppenabfrage
Hallo und guten morgen,
ich habe ein Problem und brauche eure Unterstützung.
Nach langen suchen habe ich nun ein Script gefunden was ich gerne einsetzen möchte. Nur leider funktioniert es nicht so wie ich möchte.
Ich möchte ein Script haben, was prüft, welcher User in welchen Gruppen ist, sollte ein Übereinstimmung sein, dann bekommt er das jeweilige Laufwerk und den jeweiligen Drucker.
Der DC ist ein Server 2008, es sind mehrere Terminalserver da.
Es ist ein Fileserver vorhanden, und die Workstation bestehen zum größten Teil aus Igel-Thinclients.
Hier ist ein Script was ich gefunden , und ein wenig angepaßt habe.
Aber ich bin mir nicht sicher, ob es richtig ist, was ich gemacht habe.
Wenn ihr euch das mal anschaut, und mir eine Tipp geben könnt, den auch eine "Laie in Scripting" versteht, bin ich euch sehr dankbar.
Nach langem testen habe ich nun festgestellt, wenn ich folgende Konfiguration habe:
OU=Gruppe, OU=untergruppe.
in untergruppe sind nun meine Gruppen auf die das Script greifen soll.
Dann funktioniert es nicht.
Setze ich nun die Gruppen, direkt in die OU=gruppe dann greift auch mein Script. Woran liegt das???
Wie schon gesagt, ich bin noch Anfänger was scripting angeht, und lerne mit jedem Script dazu...
mfg
Sascha
Der DC ist ein Server 2008, es sind mehrere Terminalserver da.
Es ist ein Fileserver vorhanden, und die Workstation bestehen zum größten Teil aus Igel-Thinclients.
Hier ist ein Script was ich gefunden , und ein wenig angepaßt habe.
Aber ich bin mir nicht sicher, ob es richtig ist, was ich gemacht habe.
Wenn ihr euch das mal anschaut, und mir eine Tipp geben könnt, den auch eine "Laie in Scripting" versteht, bin ich euch sehr dankbar.
Dim strComputerName
Dim strUserName
Dim strDomainName
Dim strPrintSRV
Dim strPrintSRV2
Dim objADSysInfo
Dim wshNetwork
Dim WshShell
Dim WshSysEnv
Dim oShell
Dim oShFolder
Dim objUser
Dim objOU
Dim rootDSE
Dim oPq
Dim ws
Set wshNetwork = WScript.CreateObject( "WScript.Network" )
Set WshShell = WScript.CreateObject("WScript.Shell")
Set WshProcEnv = WshShell.Environment("Process")
Set WshUserEnv = WshShell.Environment("USER")
Set objADSysInfo = CreateObject("ADSystemInfo")
Set oShell = CreateObject("Shell.application")
Set oShFolder = oShell.Namespace(17)
Set objUser = GetObject("LDAP://" & objADSysInfo.UserName)
Set objOU = GetObject(objUser.parent)
Set objFSO = CreateObject("Scripting.FileSystemObject")
strPrintSRV = "printsrv"
Server1 = "DC-Server"
Server2 = "file-Server"
'Warten bis der Anmeldename des Users ermittelt wurde
Do While wshNetwork.username = ""
WScript.Sleep 25
Loop
strComputerName = wshNetwork.computerName
strUserName = wshNetwork.userName
strDomainName = wshNetwork.userDomain
Call subdrivemap 'Aufruf der Subroutine zum Laufwerkmappen
Sub subdrivemap()
' ### ADSI abfragen
adspath = "WinNT://" & strDomainName & "/" & strUserName
Set adsobj = GetObject( adspath )
WScript.Echo (Test)
'##### vorhandene Laufwerke löschen
On Error Resume Next
wshNetwork.RemoveNetworkDrive "I:", True, True
wshNetwork.RemoveNetworkDrive "J:", True, True
wshNetwork.RemoveNetworkDrive "K:", True, True
wshNetwork.RemoveNetworkDrive "L:", True, True
wshNetwork.RemoveNetworkDrive "H:", True, True
wshNetwork.RemoveNetworkDrive "N:", True, True
wshNetwork.RemoveNetworkDrive "O:", True, True
wshNetwork.RemoveNetworkDrive "Z:", True, True
wshNetwork.RemoveNetworkDrive "P:", True, True
wshNetwork.RemoveNetworkDrive "Q:", True, True
wshNetwork.RemoveNetworkDrive "S:", True, True
wshNetwork.RemoveNetworkDrive "W:", True, True
wshNetwork.RemoveNetworkDrive "X:", True, True
wshNetwork.RemoveNetworkDrive "M:", True, True
'##### für jeden gültige Laufwerke mappen
'wshNetwork.MapNetworkDrive "I:", "\\"&Server2&"\User\"& strUserName
'wshNetwork.MapNetworkDrive "L:", "\\"&Server2&"\AUS"
wshNetwork.MapNetworkDrive "V:", "\\" & Server2 & "\Vorlagen"
wshNetwork.MapNetworkDrive "X:", "\\" & Server1 & "\Xerox"
'Drucker mappen
wshNetwork.AddWindowsPrinterConnection "\\" & strPrintSRV2 & "\BrotherH"
wshNetwork.AddWindowsPrinterConnection "\\" & strPrintSRV2 & "\GPKlassig"
wshNetwork.AddWindowsPrinterConnection "\\" & strPrintSRV2 & "\KyoceraF"
'##### Gruppenabhängige Laufwerke mappen
For Each prop In adsobj.groups
'* ACHTUNG! Gruppennamen immer GROSS schreiben
Select Case UCase(prop.name)
Case "MITARBEITER"
wshNetwork.MapNetworkDrive "K:", "\\" & Server2 & "\Kanzleiverwaltung"
wshNetwork.MapNetworkDrive "M:", "\\" & Server2 & "\Mandantenstamm"
wshNetwork.MapNetworkDrive "P:", "\\" & Server2 & "\Software"
Case "GESCHÄFTSLEITUNG"
wshNetwork.MapNetworkDrive "I:", "\\" & Server2 & "\Kanzlei_intern"
'Case "HR"
'wshNetwork.MapNetworkDrive "L:", "\\"&Server2&"Groups$\Profile"
End Select
Next
End Sub
Nach langem testen habe ich nun festgestellt, wenn ich folgende Konfiguration habe:
OU=Gruppe, OU=untergruppe.
in untergruppe sind nun meine Gruppen auf die das Script greifen soll.
Dann funktioniert es nicht.
Setze ich nun die Gruppen, direkt in die OU=gruppe dann greift auch mein Script. Woran liegt das???
Wie schon gesagt, ich bin noch Anfänger was scripting angeht, und lerne mit jedem Script dazu...
mfg
Sascha
Please also mark the comments that contributed to the solution of the article
Content-Key: 128931
Url: https://administrator.de/contentid/128931
Printed on: April 26, 2024 at 08:04 o'clock
13 Comments
Latest comment
Hallo SasHW2k3!
Streiche die Zeilen 45 bis 49 und ersetze die Zeilen 81 durch:
und 84 durch:
Die ursprüngliche Zeile 25
soll so bleiben, da diese Zeile den User als Objekt liefert, dessen Gruppenmitgliedschaften dann in der Schleife ab Zeile 81 ausgelesen werden.
Wie du schon bemerkt hast, wird bei Verwendung des Attributes "
Grüße
bastla
Streiche die Zeilen 45 bis 49 und ersetze die Zeilen 81 durch:
For Each prop In objUser.groups
Select Case UCase(prop.cn)
Die ursprüngliche Zeile 25
Set objUser = GetObject("LDAP://" & objADSysInfo.UserName)
Wie du schon bemerkt hast, wird bei Verwendung des Attributes "
.Name
" ein "CN=
" vorangestellt, weswegen die Eigenschaft ".cn
" für Deinen Zweck günstiger ist.Grüße
bastla