tvctfromhell 10 Geschrieben 8. Oktober 2009 Melden Teilen Geschrieben 8. Oktober 2009 Hallo, ich versuche mit einem Script die Netzlaufwerke zu verbinden, was auch gut klappt, solange die user Mitglieder der im Script genannten Gruppe sind. Sind user allerdings nicht DIREKT Mitglied der Gruppe, sondern Mitglied einer Gruppe, die in besagter Gruppe Miglied sind, wird das Laufwerk nicht verbunden :-( Kann jemand helfen? Gruß:) Zitieren Link zu diesem Kommentar
NilsK 2.934 Geschrieben 8. Oktober 2009 Melden Teilen Geschrieben 8. Oktober 2009 Moin, dazu müssten wir jetzt nur noch wissen, mit welcher Technik du denn deine bedingten Mappings machst ... Gruß, Nils Zitieren Link zu diesem Kommentar
tvctfromhell 10 Geschrieben 8. Oktober 2009 Autor Melden Teilen Geschrieben 8. Oktober 2009 per WMI-Script, wenn Du das meinst :) Gruß tvct Zitieren Link zu diesem Kommentar
NilsK 2.934 Geschrieben 8. Oktober 2009 Melden Teilen Geschrieben 8. Oktober 2009 Moin, oh. Aha. Doch so ausführlich. How to ask a question Gruß, Nils Zitieren Link zu diesem Kommentar
tvctfromhell 10 Geschrieben 9. Oktober 2009 Autor Melden Teilen Geschrieben 9. Oktober 2009 hmm - sorry - ich ergänze nochmal die Angaben: Domäne im einheitlichen Modus unter Windows Server 2003 Serveranzahl: 8 Domänenserver Useranzahl: ca 1.000 Die User sollen über das WMI-Script verschiedene Laufwerke verbunden bekommen. Dies ist abhängig von der Gruppenzugehörigkeit. Das ganze funktioniert auch, solange die Useraccounts auch DIREKT in der angegebenen Gruppe sind. Sind die User allerdings nicht DIREKT in der Gruppe (z.B. Gruppe_A), die im Script angegeben ist um das Laufwerk zu verbinden, sondern in einer anderen Gruppe (z.B. Gruppe_B), funktioniert die Laufwerksverbindung nicht, obwohl Gruppe_B Mitglied der Gruppe_A ist. Beide Gruppen sind globale Gruppen. Vielen Dank im Voraus für Hilfe :) Zitieren Link zu diesem Kommentar
NilsK 2.934 Geschrieben 9. Oktober 2009 Melden Teilen Geschrieben 9. Oktober 2009 Moin, die Logik deines Skripts passt nicht. Näheres können wir nur sagen, wenn du endlich mal dein Skript hier postest. Gruß, Nils Zitieren Link zu diesem Kommentar
tvctfromhell 10 Geschrieben 12. Oktober 2009 Autor Melden Teilen Geschrieben 12. Oktober 2009 ok - here we are :-) On Error Resume Next ' Konstanten letzte aenderung 2009-04-11 Const E_ADS_PROPERTY_NOT_FOUND = &h8000500D Const HKEY_CURRENT_USER = &H80000001 ' Variablen fuer die Laufwerksverbindungen Dim vVolumeF Dim vVolumeG Dim vVolumeI Dim vVolumeJ Dim vVolumeK Dim vVolumeL Dim vVolumeM Dim vVolumeN Dim vVolumeO Dim vVolumeP Dim vVolumeS Dim vVolumeT Dim vVolumeU Dim vVolumeV Dim vVolumeW Dim vVolumeX Dim vVolumeY Dim vVolumeZ ' Variablen fuer die zu verbindenden Drucker Dim standardDrucker Dim drucker2 Dim drucker3 ' Einstellung eines allgemeinen Laufwerkes fuer alle Domaenenbenutzer ' Wenn ein allgemeines Laufwerk gewuenscht ist, hinter 'allgLaufwerk' den gewuenschten ' Laufwerksbuchstaben eintragen 'Dim allgLaufwerk 'Dim allgFreigabe vVolumeF = "nothing" vVolumeG = "nothing" vVolumeI = "nothing" vVolumeJ = "nothing" vVolumeK = "nothing" vVolumeL = "nothing" vVolumeM = "nothing" vVolumeN = "nothing" vVolumeO = "nothing" vVolumeP = "nothing" vVolumeS = "nothing" vVolumeT = "nothing" vVolumeU = "nothing" vVolumeV = "nothing" vVolumeW = "nothing" vVolumeX = "nothing" vVolumeY = "nothing" vVolumeZ = "nothing" standardDrucker = "nothing" drucker2 = "nothing" drucker3 = "nothing" 'allgLaufwerk = "Y:" 'allgFreigabe = "\\vm\freigabe" ' Variablen fuer das Setzen des Profils Dim sComputer, sKeyPath, sValueName, sValue2000, sValue2003, sValuemod2000, sValuemod2003, prfpath Dim oReg ' Verbindung mit dem Active Directory aufbauen um den aktuell angemeldeten Benutzer zu ermitteln Set adSystemInfo = CreateObject("ADSystemInfo") ' Erzeugen des Benutzer-Objektes mit allen Attributen des Active Directory Eintrages Set aktuellerBenutzer = GetObject ("LDAP://" & adSystemInfo.UserName) ' Log-Datei schreiben / erstellen Dim logFile 'logFile = "C:\Dokumente und Einstellungen\" & aktuellerBenutzer.FullName & "\Desktop\logon.log" logFile = "C:\temp\logon.log" set fileSys = CreateObject("Scripting.FileSystemObject") set loggingStream = fileSys.CreateTextFile(logFile, true) loggingStream.Write "Username [" & aktuellerBenutzer.FullName & "]" & VbCrLf & VbCrLf loggingStream.write "-------------------------------------------------------" & VbCrLf ' Gruppe Domaenen-Benutzer Set domaenenBenutzer = GetObject ("LDAP://cn=Domänen-Benutzer,cn=Users,dc=kgb,dc=rlp,dc=de") 'loggingStream.Write "Group [" & defGroup.Name & "]" & vbcrlf ' Erstellen einer Instanz des Netzwerk-Objektes zum Anlegen/Entfernen von Laufwerksverbindungen Set wshNetwork = WScript.CreateObject( "WScript.Network" ) ' Alle momentan verbundenen Laufwerke ermitteln Set verbundeneLaufwerke = wshNetwork.EnumNetworkDrives loggingStream.Write "Nummer der verbundenen Laufwerke [" & verbundeneLaufwerke.Count & "]" & VbCrLf ' Trennen der vorhandenen Laufwerksverbindungen For i = 0 to verbundeneLaufwerke.Count -1 Step 2 If verbundeneLaufwerke.Item(i) = "F:" Then wshNetwork.RemoveNetworkDrive "F:" End If If verbundeneLaufwerke.Item(i) = "G:" Then wshNetwork.RemoveNetworkDrive "G:" End If If verbundeneLaufwerke.Item(i) = "I:" Then wshNetwork.RemoveNetworkDrive "I:" End If If verbundeneLaufwerke.Item(i) = "J:" Then wshNetwork.RemoveNetworkDrive "J:" End If If verbundeneLaufwerke.Item(i) = "K:" Then wshNetwork.RemoveNetworkDrive "K:" End If If verbundeneLaufwerke.Item(i) = "L:" Then wshNetwork.RemoveNetworkDrive "L:" End If If verbundeneLaufwerke.Item(i) = "M:" Then wshNetwork.RemoveNetworkDrive "M:" End If If verbundeneLaufwerke.Item(i) = "N:" Then wshNetwork.RemoveNetworkDrive "N:" End If Zitieren Link zu diesem Kommentar
tvctfromhell 10 Geschrieben 12. Oktober 2009 Autor Melden Teilen Geschrieben 12. Oktober 2009 If verbundeneLaufwerke.Item(i) = "O:" Then wshNetwork.RemoveNetworkDrive "O:" End If If verbundeneLaufwerke.Item(i) = "P:" Then wshNetwork.RemoveNetworkDrive "P:" End If If verbundeneLaufwerke.Item(i) = "S:" Then wshNetwork.RemoveNetworkDrive "S:" End If If verbundeneLaufwerke.Item(i) = "T:" Then wshNetwork.RemoveNetworkDrive "T:" End If If verbundeneLaufwerke.Item(i) = "U:" Then wshNetwork.RemoveNetworkDrive "U:" End If If verbundeneLaufwerke.Item(i) = "V:" Then wshNetwork.RemoveNetworkDrive "V:" End If If verbundeneLaufwerke.Item(i) = "W:" Then wshNetwork.RemoveNetworkDrive "W:" End If If verbundeneLaufwerke.Item(i) = "X:" Then wshNetwork.RemoveNetworkDrive "X:" End If If verbundeneLaufwerke.Item(i) = "Y:" Then wshNetwork.RemoveNetworkDrive "Y:" End If If verbundeneLaufwerke.Item(i) = "Z:" Then wshNetwork.RemoveNetworkDrive "Z:" End If Next 'memberOf ist ein ActiveDirectory Attribut mit der Liste der Gruppen des Benutzers Dim arrMemberOf loggingStream.Write "Das Active Directory Attribut 'MemberOf' des Benutzers [" & adSystemInfo.UserName & "] wird ermittelt." & VbCrLf ' DieVariable 'memberOf' wird mit den Gruppen in denen der Benutzer Mitglied ist belegt. ' memberOf ist ein "Array" mit mehreren Elementen, auch wenn es sich nur um ein einzelnes Element handelt If (IsArray(aktuellerBenutzer.MemberOf)) Then arrMemberOf = aktuellerBenutzer.MemberOf Else arrMemberOf = Array(aktuellerBenutzer.MemberOf) End If loggingStream.Write "Benutzer ist Mitglied der folgenden Gruppen:" & vbcrlf For Each Group in arrMemberOf loggingStream.Write " --> " & group & vbcrlf Next Dim reqGroup Dim istMitglied 'istMitglied = -1 If domaenenBenutzer.IsMember("LDAP://" & adSystemInfo.UserName) Then istMitglied = 1 Else istMitglied = 0 End If ' Primre Gruppenmitgliedschaft zusaetzlich ueber die ID kontrollieren If (istMitglied = 0) Then If (objUser.PrimaryGroupID = 513) Then istMitglied = 1 End If End If If (istMitglied = 1) Then loggingStream.Write "Benutzer [" & adSystemInfo.UserName & "] ist Mitglied der Gruppe [" & domaenenBenutzer.Name & "]" & vbcrlf If (allgLaufwerk <> "nothing") Then MapDrive allgLaufwerk, allgFreigabe, "1" End if Else loggingStream.Write "Benutzer [" & adSystemInfo.UserName & "] ist kein Mitglied der Gruppe [" & domaenenBenutzer.Name & "]" & VbCrLf End If ' check ob alles bisher geklappt hat / gefunden wurde If Err.Number <> E_ADS_PROPERTY_NOT_FOUND Then For Each Group in arrMemberOf ' schneidet aus der ActiveDirectory Gruppenbezeichnung den eigentlichen Namen heraus myGroup = Left(Group,InStr(Group,",")-1) myGroup = Right(myGroup,Len(myGroup)-3) ' ------------------------------------------------------------------------------- ' ' Ab hier folgen die eigentlichen Laufwerkszuweisungen in Abhaengigkeit der Gruppenzugehoerigkeit ' ' ------------------------------------------------------------------------------- Select Case myGroup ' --------------------------------------------------------------------------- ' Laufwerke, Drucker und Profildateien abhaengig von der Gruppe waehlen: ' ' --------------------------------------------------------------------------- Zitieren Link zu diesem Kommentar
olc 18 Geschrieben 12. Oktober 2009 Melden Teilen Geschrieben 12. Oktober 2009 Hi, Du fragst offensichtlich nur das MemberOf Attribut ab - daher bekommst du auch keine verschachtelten Gruppenmitgliedschaften. Aber bevor man hier Hinweise zum VBScript gibt (es ist kein WMI, wie Du es oben schriebst...) die kurze Nachfrage, warum ein VBScript eingesetzt werden soll? Gibt es dafür einen speziellen Grund? Falls nicht, könntest Du Dir einmal die Group Policy Preferences anschauen, die sollten das recht problemlos mit wenig Aufwand lösen können. Falls Du es aber trotzdem unbedingt mit VBScript erledigen möchtest, wirf einmal einen Blick hier hinein: Hey, Scripting Guy!: Determining a User?s Group Memberships Viele Grüße olc Zitieren Link zu diesem Kommentar
tvctfromhell 10 Geschrieben 20. Oktober 2009 Autor Melden Teilen Geschrieben 20. Oktober 2009 Mercie für die Antwort :) Welches Attribut muss denn für die Untergruppen abgefragt werden? gruß Zitieren Link zu diesem Kommentar
Sunny61 806 Geschrieben 20. Oktober 2009 Melden Teilen Geschrieben 20. Oktober 2009 Welches Attribut muss denn für die Untergruppen abgefragt werden? Schau dir den von olc geposteten Link doch mal ganz genau und in Ruhe an. Da sollte das richtige für dich dabei sein. 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.