Sto tentando di rimuovere un utente da un gruppo di sicurezza utilizzando Python e pywin32, ma finora non hanno avuto esito positivo. Tuttavia, sono in grado di aggiungere un utente a un gruppo di sicurezza.Rimuovi utente AD dal gruppo Sicurezza utilizzando 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
L'errore è inferiore:
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)
Ho anche provato ad aggiungere utilizzando GetObject per ottenere l'utente e rimuovere in questo modo, tuttavia ottengo lo stesso errore.
usr = GetObject("LDAP://CN=user,OU=users,DC=blah,DC=local")
grp.Remove(usr)
Qualsiasi aiuto sarebbe molto apprezzato come ho colpito un vicolo cieco qui.
EDIT
Inoltre ho provato ora utilizzando il modulo active_directory di Tim Golden per cercare di rimuovere il membro del gruppo.
import active_directory as ad
grp = ad.find_group("groupname")
usr = ad.find_user("username")
grp.remove(usr.path())
Tuttavia anche questo non funziona, e ho incontrato l'errore sotto.
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 suggerito che cambio a Python 2.7 e dare che un andare. Ho appena provato questo:
import active_directory as ad
user = ad.find_user("username")
group = ad.find_group("groupname")
group.remove(user.path())
... ma sto ancora ricevendo un errore
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)
L'utente e di gruppo sono sicuramente trovato correttamente, come posso stampare i loro percorsi LDAP utilizzando print user.path()
e print group.path()
Esistono altre librerie di directory attive per Python 3.3 che chiunque può consigliare?
Che cosa si intende per nome di un gruppo esistito? Il gruppo esiste definitivamente e quando lo trovo con find_group sono in grado di stamparlo. Sono anche in grado di stampare l'utente. – ryansin
Intendi in annuncio che hai un gruppo chiamato "gruppo" e hai anche un utente il cui nome è "username"? – wherby
No ...quelli erano esempi in cui ho sostituito il nome effettivo del gruppo/utente perché sono irrilevanti. – ryansin