Sonic 10 Geschrieben 10. Oktober 2007 Melden Teilen Geschrieben 10. Oktober 2007 Hi, habe Probleme mit meinem Anmeldescript. Hab dieses per Policy eingebunden. Ich will damit Laufwerke für User je nach ADS-Gruppenmitgliedschaft mappen. Hier das Anmeldescript: Option Explicit Dim objNetwork, objUser, CurrentUser Dim strGroup Const IT_RW = "cn=IT_RW" Const IT_DOK_RW = "cn=IT_DOK_RW" Set objNetwork = CreateObject("WScript.Network") Set objUser = CreateObject("ADSystemInfo") Set CurrentUser = GetObject("LDAP://" & objUser.UserName) strGroup = LCase(Join(CurrentUser.MemberOf)) If InStr(strGroup, lcase(IT_RW)) Then objNetwork.MapNetworkDrive "h:", "\\dlspdc\users\test" End If If InStr(strGroup, lcase(IT_DOK_RW)) Then objNetwork.MapNetworkDrive "u:", "\\dlspdc\home\test" End If WScript.Quit das Script funktioniert sobald der User in beiden ADS Gruppen Mitglied ist sobald er aber nur in einer der beiden bzw. keiner Mitglied ist kommt ne Fehlermeldung: Hier die Fehlermeldung: Zeile: 11 Zeichen: 1 Fehler: Typen unverträglich: Join Code: 800A000D Wäre super wenn mir jemand weiterhelfen könnte zumal das Script wenn ich es auf dem DC mit dem Domänenadministrator ausführe funktioniert auch wenn ich nur in einer gruppe bin. Bin momentan mit meinem Latein am ende. Für alle Tipps dankbar. Gruß Jens Zitieren Link zu diesem Kommentar
Cybquest 36 Geschrieben 10. Oktober 2007 Melden Teilen Geschrieben 10. Oktober 2007 Hmmm, hat wohl der Join-Befehl ein Problem damit, wenn er nichts zu joinen hat... Probiers mal so: strGroup = "" for each member in CurrentUser.MemberOf strGroup = strGroup & lcase(member) & " " next Zitieren Link zu diesem Kommentar
Sonic 10 Geschrieben 10. Oktober 2007 Autor Melden Teilen Geschrieben 10. Oktober 2007 Hi danke für den Tipp, habs leider nicht hinbekommen. Könnte mir jemand ein einfaches Script posten mit dem ich die Mappings je nach Mitgliedschaft der ADS Gruppe machen kann ich kenn mich mit vbscript leider nicht so aus aber muss echt sagen mit Kixtart war das ganze doch wesentlich leichter. Hoffe mir kann jemand weiterhelfen. Gruß Jens Zitieren Link zu diesem Kommentar
Cybquest 36 Geschrieben 10. Oktober 2007 Melden Teilen Geschrieben 10. Oktober 2007 Dein Script sah doch schon nett aus. Was hast du denn nicht hinbekommen? Es wäre doch nur strGroup = LCase(Join(CurrentUser.MemberOf)) durch o.g. Code zu ersetzen. Zitieren Link zu diesem Kommentar
Sonic 10 Geschrieben 10. Oktober 2007 Autor Melden Teilen Geschrieben 10. Oktober 2007 Hi, na ja das hab ich probiert allerdings bekomm ich jetz die Fehlermeldung Zeile: 12 Fehler: Variable ist nicht definiert "member" Kannst du mir weiterhelfen muss ich da noch ne Variable definieren. Gruß jens Zitieren Link zu diesem Kommentar
Cybquest 36 Geschrieben 10. Oktober 2007 Melden Teilen Geschrieben 10. Oktober 2007 Ah... ok, oben noch ein "Dim member" rein oder das "Dim strGroup" durch "Dim strGroup, member" ersetzen. Zitieren Link zu diesem Kommentar
Sonic 10 Geschrieben 10. Oktober 2007 Autor Melden Teilen Geschrieben 10. Oktober 2007 Also danke nochmals :) für deine Hilfe ich hab allerdings noch ein weiteres Script aufgetrieben was funktioniert und auch noch alle Fehlerquellen abdeckt. Hier das Script für alle dies interessiert: Option Explicit Dim WSHNetwork, FSO, strUserName, strUserDomain, ObjGroupDict, EnvVar, strVarUserName Set WSHNetwork = WScript.CreateObject("WScript.Network") Set EnvVar = WScript.CreateObject("WScript.Shell") Set FSO = CreateObject("Scripting.FileSystemObject") strVarUserName = EnvVar.ExpandEnvironmentStrings("%username%") ' Wait until the user is really logged in... strUserName = "" While strUserName = "" WScript.Sleep 100 strUserName = WSHNetwork.UserName Wend strUserDomain = WSHNetwork.UserDomain Set ObjGroupDict = CreateMemberOfObject(strUserDomain, strUserName) If MemberOf(ObjGroupDict, "IT_RW") Then If FSO.DriveExists("u:") Then WSHNetwork.RemoveNetworkDrive "u:" WSHNetwork.MapNetworkDrive "u:", "\\dlspdc\users" Else WSHNetwork.MapNetworkDrive "u:", "\\dlspdc\users" End If End If If MemberOf(ObjGroupDict, "IT_DOK_RW") Then If FSO.DriveExists("p:") Then WSHNetwork.RemoveNetworkDrive "p:" WSHNetwork.MapNetworkDrive "p:", "\\dlspdc\home" Else WSHNetwork.MapNetworkDrive "p:", "\\dlspdc\home" End If End If Function MemberOf(ObjDict, strKey) MemberOf = CBool(ObjGroupDict.Exists(strKey)) End Function Function CreateMemberOfObject(strDomain, strUserName) 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 Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.