cbarth 10 Geschrieben 20. Juli 2010 Melden Teilen Geschrieben 20. Juli 2010 Hi, ich habe auf unseren Terminalservern ein Script welches die Laufwerke anhand Gruppenzugehörigkeit zuweist. Da auf dem Terminalserver eine Loopback Policy mit ersetzen konfiguriert ist. Werden Laufwerke die in OU Scripts hinterlegt sind nicht verbunden. Ist es möglich Laufwerke anhand einer OU Zugehörigkeit zu mappen am besten mit einer Select Case damit das ganze auch bei 100 OU´s noch performant ist? Anbei mein Script für die Gruppen so ungefähr soll es sein nur eben für OU´s: On Error Resume Next Set objSysInfo = CreateObject("ADSystemInfo") Set objNetwork = CreateObject("Wscript.Network") strUserPath = "LDAP://" & objSysInfo.UserName Set objUser = GetObject(strUserPath) For Each strGroup in objUser.MemberOf strGroupPath = "LDAP://" & strGroup Set objGroup = GetObject(strGroupPath) strGroupName = objGroup.CN Select Case strGroupName Case "Gruppe1" objNetwork.MapNetworkDrive "S:", "\\server\groups\Gruppe1" Case "Gruppe2" objNetwork.MapNetworkDrive "I:", "\\server\groups\Gruppe2" Case n .... End Select Next Zitieren Link zu diesem Kommentar
NorbertFe 2.068 Geschrieben 20. Juli 2010 Melden Teilen Geschrieben 20. Juli 2010 Ja das geht, aber eventuell wäre es ja einfacher das per GPP abzufackeln. ;) Ansonsten bspw: faq-o-matic.net Ein AD-Attribut zu einem Logon-Namen herausfinden und faq-o-matic.net AD-Informationen schnell auslesen Bye Norbert Zitieren Link zu diesem Kommentar
P.Foeckeler 11 Geschrieben 23. Juli 2010 Melden Teilen Geschrieben 23. Juli 2010 (bearbeitet) Hallo, also du machst ja folgendes mit deinem Script: Die Gruppen des aktuellen Benutzers rausfinden Je nach Gruppe ein Laufwerk setzen So, und wenn Du das jetzt mit dem Kriterium "je-nachdem-in-welcher-OU-der USer ist", dann ist das ja keine Frage von 100en OUs (ein Benutzer kann ja nur in einer OU sein, na und dann noch logisch gesehen in den darüber liegenden, je nachdem wie man's sieht..... Also dann müßte das ungefähr so aussehen. Ein "Select Case" kann man nicht machen, sondern muss irgendwie mit der InStr Funktion rumspielen, von wegen "Wenn im LDAP-Pfad des Benutzers der LDAP-Pfad einer OU enthalten ist, dann folgende Gruppenmitgliedschaft" .... Infos zum LDAP PFad: SelfADSI : LDAP-Pfadnamen und Distinguished Names On Error Resume Next Set objSysInfo = CreateObject("ADSystemInfo") Set objNetwork = CreateObject("Wscript.Network") strUserPath = "LDAP://" & objSysInfo.UserName ou1 = "ou=data,dc=example,dc=com" ou2 = "ou=unterOU1,ou=data,dc=example,dc=com" ou3 = "ou=unterOU2,ou=data,dc=example,dc=com" ou4 = "ou=benutzer,dc=example,dc=com" '.....usw usw if (InStr(strUserPath , ou1) > 0 ) then objNetwork.MapNetworkDrive "S:", "\\server\OUs\ou1" End if if (InStr(strUserPath , ou2) > 0 ) then objNetwork.MapNetworkDrive "S:", "\\server\OUs\ou2" end if if (InStr(strUserPath , ou3) > 0 ) then objNetwork.MapNetworkDrive "S:", "\\server\OUs\ou3" end if if (InStr(strUserPath , ou4) > 0 ) then objNetwork.MapNetworkDrive "S:", "\\server\OUs\ou4" end if '....usw usw end if Gruß, Philipp bearbeitet 23. Juli 2010 von P.Foeckeler Zitieren Link zu diesem Kommentar
P.Foeckeler 11 Geschrieben 23. Juli 2010 Melden Teilen Geschrieben 23. Juli 2010 Ich nochmal: ...oder entsprechend als Array, außerdem habe ich noch ein paar LCase Aufrufe für Groß-/KleinSchreibung eingefügt... On Error Resume Next Set objSysInfo = CreateObject("ADSystemInfo") Set objNetwork = CreateObject("Wscript.Network") strUserPath = LCase(objSysInfo.UserName) OU = Array( _ "ou=data,dc=example,dc=com", _ "ou=unterOU1,ou=data,dc=example,dc=com", _ "ou=unterOU2,ou=data,dc=example,dc=com", _ "ou=benutzer,dc=example,dc=com" ) SHARE = Array( _ "\\server\OUs\ou1", _ "\\server\OUs\ou2", _ "\\server\OUs\ou3", _ "\\server\OUs\ou4" ) for i = o to UBound(OU) if (InStr(strUserPath , OU(i)) > 0 ) then objNetwork.MapNetworkDrive "S:", SHARE(i) End if next Gruß, Philipp Zitieren Link zu diesem Kommentar
cbarth 10 Geschrieben 23. Juli 2010 Autor Melden Teilen Geschrieben 23. Juli 2010 Wieso nicht mit select Case? Das ist viel schneller, klar gibt es nur 1 OU in der User sein, aber das ist ja egal. Besser als 100x IF THEN. On Error Resume Next Set objADSysInf = CreateObject("ADSystemInfo") Set objUser = GetObject("LDAP://" & objADSysInf.UserName) Set objOU = GetObject(objUser.parent) strOUName = objOU.distinguishedName Select Case strOUName Case "OU=Users,OU=SB WKD-IT,OU=Wolters-Kluwer Deutschland GmbH,DC=wkd,DC=wolterskluwer,DC=de" Case "OU=Users,OU=Accounts,OU=35-Koeln,OU=D2-Germany,DC=wkd,DC=wolterskluwer,DC=de" End Select Zitieren Link zu diesem Kommentar
NorbertFe 2.068 Geschrieben 24. Juli 2010 Melden Teilen Geschrieben 24. Juli 2010 Wahrscheinlich weil die Array Lösung schneller sein dürfte. ;) Bye Norbert 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.