Jump to content

vbs als ifmember ersatz


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

Empfohlene Beiträge

Hi,

 

da ifmember.exe ab 110 Gruppen pro User rum spinnt bin ich auf der Suche nach einem Ersatz. Die Problematik wurde schonmal hier

http://www.administrator.de/index.php?content=43532&thread=false

diskutiert.

Dieses Skript

if wscript.arguments.count <> 2 then
 wscript.echo "ifmember.vbs <user> <group>"
 wscript.quit
end if

sUser = ucase (wscript.arguments(0))
sGroup = wscript.arguments(1)

on error resume next
set oGrp = GetObject("WinNT://DOMAINNAME/" & sGroup)
for each oMember in oGrp.Members
 if ucase(oMember.Name) = sUser then
 	bFound = true
 end if
next
on error goto 0

if bFound then
 wscript.echo "Benutzer " & sUser & " gefunden in Gruppe " & sGroup
end if

wscript.quit (bFound)

habe ich mir als Vorlage genommen...

mittels batch rufe ich es über

cscript ifmember.vbs BenutzerX GruppeY

auf, hierbei ist es egal, ob bei GetObject etwas eingetragen ist oder nicht, es wird immer

Benutzer BenutzerX gefunden in Gruppe GruppeY

ausgegeben.

Wie geb ich den korrekten Pfad für meine Domäne an?

Hab schon

set oGrp = GetObject("WinNT://mw/" & sGroup)

set oGrp = GetObject("WinNT://mw.local/" & sGroup)

set oGrp = GetObject("ldap://dc=mw,dc=local/" & sGroup)

ausprobiert, leider ohne Erfolg :(

 

Ideen?

Grüße gw5

Link zu diesem Kommentar

Hallo GW5, Willkommen am Board :)

 

bei dem aktuellen Problem kann ich nicht helfen.

 

Nur so viel: Mit Einführung von W2k und Gruppenrichtlinien habe ich auf ifmember verzichtet.

 

Z.B. gibt es für drei Geschäftbereiche ebenso drei Organisationseinheiten und drei LoginBatches; letztere werden gestartet im jeweiligen Benutzerknoten der Richtlinie.

 

Für einen Geschäftsbereich gibt es mehrere Sicherheitgruppen, eine der Geschäftbereich selber auf die Root des Bereiches, dann noch weitere für die Berechtigungen auf die Unterordner.

 

Das Mappen der Netzlaufwerke geschieht auf den Geschäftsbereich und die Unterordner, falls der Benutzer Member ist. Wo er keine Rechte hat, da ist das Mappen erfolglos.

 

Meine LoginBatches sind simpel:

 

If exist ..... net use ......

 

Dank ABE werden dem Benutzer nur Unterordner gezeigt, auf die er Rechte hat, also nur die können mapped werden.

 

 

Eine Möglichkeit wäre also, das Konzept zu überdenken; nur relativ wenige Sicherheitsgruppen durch Struktur.

bearbeitet von lefg
Link zu diesem Kommentar

Moin lefg,

 

danke schonmal für deinen Hinweis.

Leider kann an der gegebenen Gruppen/OU-Struktur nicht viel geändert werden. Aber trotzdem habe ich noch eine Frage zu deinem Logon-Batch. Wie fragst du mit if exist die Gruppenzugehörigkeit eines Userers ab?

Könntest du mal eine komplette Abfrage posten? :)

 

VG gw5

Link zu diesem Kommentar

Moin gw5,

 

abgefragt wird das Vorhandensein, amn kann auch sagen das Erkennen des Ordners.

 

ABE bewirkt, nur die Ordner mit Berechtigungen darauf sind für den Benutzer und das sicht-, erreichbar. Die Existenz wird also abgefragt und nur im positiven Fall das Mapping ausgeführt.

 

set Fileserver=\\0Server
if exist %Fileserver%\NLL net use G: %Fileserver%\NLL /persistent:yes
if exist %Fileserver%\NLL\Vertrieb net use V: %Fileserver%\NLL\Vertrieb /persistent:yes

 

Freigegeben ist der Ordner NLL als Root eines Bereiches, darin z.B. der Unterordner Vertrieb.

 

Es gibt dieSicherheitsgruppen NLL und Vertrieb, NLL ist Mitglied von Vertrieb; bedeutet, ein Member in Vertrieb bekommt automatisch auch die Berechtigung auf NLL.

 

Gruß

 

Edgar

Link zu diesem Kommentar

Hallo,

 

entferne im Code "on error resume next" und werte dann die Fehlermeldung beim Ausführen des Scripts aus.

Alternativ kannst Du direkt unter der Zeile mit "GetObject" folgenden Code einfügen.

Mit beiden Methoden erfährst Du, ob der Fehler überhaupt bei der Zeile mit "GetObject" liegt und welcher Fehler auftritt.

 

If Err.Number = 0 Then
 MsgBox("Everything went fine")
ElseIf Err.Number = 429 Then
 MsgBox("No object of the specified class type exists.")
ElseIf Err.Number = 432 Then
 MsgBox("No object with the specified path and file name exists.")
Else
 MsgBox("Error " & Err.Number & " occurred")
End If
Err.Clear()

 

Grüße,

 

Sigma

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...