Próbuję usunąć użytkownika z grupy zabezpieczeń za pomocą Pythona i pywin32, ale jak dotąd nie udało się. Jednak jestem w stanie dodać użytkownika do grupy bezpieczeństwa.Usuń użytkownika AD z grupy Security przy użyciu Python
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
Błąd znajduje się poniżej:
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)
Próbowałem również dodanie użyciu GetObject uzyskać użytkownika i usunąć go w ten sposób, jednak otrzymuję ten sam błąd.
usr = GetObject("LDAP://CN=user,OU=users,DC=blah,DC=local")
grp.Remove(usr)
Każda pomoc byłaby bardzo cenna, ponieważ trafiłem tutaj w ślepy zaułek.
EDIT
Mam również teraz spróbował wykorzystać moduł active_directory Tim Golden, aby spróbować usunąć członka grupy.
import active_directory as ad
grp = ad.find_group("groupname")
usr = ad.find_user("username")
grp.remove(usr.path())
Jednak to również nie działa, a napotkam błąd poniżej.
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 zasugerował, że mogę zmienić na Pythonie 2.7 i dać to odchodzenie. Właśnie próbowałem:
import active_directory as ad
user = ad.find_user("username")
group = ad.find_group("groupname")
group.remove(user.path())
... ale ja wciąż otrzymuję błąd
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)
użytkownik i grupa są zdecydowanie uznał prawidłowo, jak mogę wydrukować swoje ścieżki i LDAP przy użyciu print user.path()
print group.path()
Czy istnieją inne biblioteki Active Directory dla Pythona 3.3, które każdy może polecić?
Co masz na myśli przez istniejącej nazwy grupy? Grupa zdecydowanie istnieje i kiedy ją otrzymam z find_group, jestem w stanie ją wydrukować. Jestem również w stanie wydrukować użytkownika. – ryansin
Masz na myśli reklamę, że masz grupę o nazwie "grupa", a także masz użytkownika o nazwie "nazwa użytkownika"? – wherby
Nie ...były to przykłady, w których zastąpiłem rzeczywistą nazwę grupy/użytkownika, ponieważ są one nieistotne. – ryansin