Ich versuche, einen Benutzer aus einer Sicherheitsgruppe mit Python und pywin32 zu entfernen, aber bisher nicht erfolgreich gewesen. Ich bin jedoch in der Lage, einen Benutzer zu einer Sicherheitsgruppe hinzuzufügen.AD-Benutzer aus der Sicherheitsgruppe mit Python entfernen
from win32com.client import GetObject
grp = GetObject("LDAP://CN=groupname,OU=groups,DC=blah,DC=local")
grp.Add("LDAP://CN=username,OU=users,DC=blah,DC=local") # successfully adds a user to the group
grp.Remove("LDAP://CN=username,OU=users,DC=blah,DC=local") # returns an error
Der Fehler ist unter:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<COMObject LDAP://CN=groupname,OU=groups,DC=blah,DC=local>", line 2, in Remove
pywintypes.com_error: (-2147352567, 'Exception occurred.', (0, None, None, None,
0, -2147024891), None)
Ich habe auch versucht, den Benutzer mit GetObject Hinzufügen zu bekommen und es auf diese Weise zu entfernen, aber ich den gleichen Fehler.
Jede Hilfe wäre sehr willkommen, da ich hier eine Sackgasse gefunden habe.
EDIT
Ich habe jetzt auch Tim Goldens active_directory Modul versucht, mit dem Gruppenmitglied, um zu versuchen und zu entfernen.
import active_directory as ad
grp = ad.find_group("groupname")
usr = ad.find_user("username")
grp.remove(usr.path())
Allerdings funktioniert dies auch nicht, und ich finde den folgenden Fehler.
Traceback (most recent call last):
File "C:\Python33\lib\site-packages\active_directory.py", line 799, in __getat
tr__
attr = getattr(self.com_object, name)
AttributeError: 'PyIADs' object has no attribute 'group'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Python33\lib\site-packages\active_directory.py", line 802, in __getat
tr__
attr = self.com_object.Get(name)
pywintypes.com_error: (-2147463155, 'OLE error 0x8000500d', (0, 'Active Director
y', 'The directory property cannot be found in the cache.\r\n', None, 0, -214746
3155), None)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python33\lib\site-packages\active_directory.py", line 1081, in remove
self.group.Remove(dn)
File "C:\Python33\lib\site-packages\active_directory.py", line 804, in __getat
tr__
raise AttributeError
AttributeError
EDIT
wherby vorgeschlagen, dass ich zu Python 2.7 und geben ändern, dass ein Go. Ich habe das gerade versucht:
import active_directory as ad
user = ad.find_user("username")
group = ad.find_group("groupname")
group.remove(user.path())
... aber ich bin noch immer einen Fehler
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<COMObject LDAP://CN=groupname,OU=groups,DC=blah,DC=local>", line 2, in remove
pywintypes.com_error: (-2147352567, 'Exception occurred.', (0, None, None, None,
0, -2147024891), None)
Die Benutzer- und Gruppen richtig auf jeden Fall gefunden, wie ich ihre LDAP-Pfade print user.path()
mit drucken kann, und print group.path()
Gibt es andere Active Directory-Bibliotheken für Python 3.3, die jeder empfehlen kann?
Was meinst du mit einem existierte Gruppennamen? Die Gruppe existiert definitiv und wenn ich sie mit find_group erhalte, kann ich sie ausdrucken. Ich bin auch in der Lage, den Benutzer zu drucken. – ryansin
Sie meinen in der Anzeige haben Sie eine Gruppe namens "Gruppe", und haben auch einen Benutzer, der Name ist "Benutzername"? – wherby
Nein ...Das waren Beispiele, bei denen ich den tatsächlichen Namen der Gruppe/des Benutzers ersetzte, weil sie irrelevant sind. – ryansin