Ich habe derzeit einen Code, der eine Liste von Benutzern in einer Gruppe aufruft und dann durch diese Gruppe iteriert, um festzustellen, ob ein bestimmter Account existiert, aber es scheint, als sollte es einen prägnanteren (und vielleicht schnelleren) Weg geben erreiche das.
Dieser Code (VB.NET) versucht, die member-Eigenschaft des Gruppenobjekts zu verwenden, gibt aber auch dann false zurück, wenn der Benutzer Mitglied dieser Gruppe ist. Kann jemand sehen, was ich hier falsch mache?
%Vor%Zu Ihrer Information: Die GetNetworkObject-Aufrufe geben nur ein Verzeichniseintrag-Objekt zurück. Ich habe bestätigt, dass das korrekte Objekt sowohl für die Gruppe als auch für das Benutzerobjekt zurückgegeben wird.
Wenn Sie sich im .NET 3.5-Stack befinden, System.DirectoryServices.AccountManagement.dll-Assembly hat eine nette API über AD. Die folgende Methode kann implementiert werden, um Ihr Problem zu lösen:
%Vor%Ich weiß nicht, wie diese Methode funktioniert, aber es ist eine saubere Lösung.
Hier ist, was ich in der Vergangenheit in einem VBS-Skript verwendet habe, das sehr gut funktioniert hat:
%Vor%Ich verwende dann ein InStr, um zu sehen, ob der Benutzer ein Teil dieser Gruppe ist:
%Vor%Sie können das oben Angeführte möglicherweise in Ihrem Projekt anpassen.
Übrigens habe ich bemerkt, dass Sie in Ihrem Code gruppendoman als letzten Parameter für "Gruppe" haben. Nicht sicher, ob Sie möchten, dass
Dim-Gruppe als DirectoryEntry = GetNetworkObject (GroupDomanName, NetworkObjectType.NetworkGroup, GroupName, gruppedoman )
vs
Dim-Gruppe As DirectoryEntry = GetNetworkObject (GroupDomanName, NetworkObjectType.NetworkGroup, GroupName, gruppendomäne )
Lass es mich wissen, wenn das hilft! JFV
Hier ist eine andere Methode, die den Verzeichnissucher und memberOf verwendet. Dies verwendet die aktuelle Objekt-ID des aktuellen Benutzers, aber Sie können dies zu einem anderen Bezeichner ändern.
%Vor%Wenn Sie Benutzereingaben verwenden möchten, die ungültige Zeichen enthalten könnten, sollten Sie ihnen immer entkommen ...
%Vor%Tags und Links active-directory ldap adsi directoryentry