Jump to content

Netzlaufwerk für Untergruppen verbinden?


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

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ß:)

Link zu diesem Kommentar

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 :)

Link zu diesem Kommentar

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

Link zu diesem Kommentar

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:

'

' ---------------------------------------------------------------------------

Link zu diesem Kommentar

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

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...