尝试使用pyad更新用户帐户时出错

时间:2018-02-14 18:51:29

标签: python python-3.x pyad

我正在尝试使用pyad更新Active Directory中的用户属性。这是我的代码

from pyad import *

pyad.set_defaults(ldap_server="server.domain.local", 
username="admin", password="password")

pyad.adobject.ADObject.update_attribute(self='testuser1', attribute='mail', 
newvalue='my@email.com')

这是我收到的错误。

Traceback (most recent call last):
 File "c:\Users\Administrator\Desktop\scripts\AD-Edit-user.py", line 12, in 
 <module>
 pyad.adobject.ADObject.update_attribute(self='testuser1', attribute='mail', 
 newvalue='my@email.com')
 File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36-
 32\lib\site-packages\pyad-0.5.20-py3.6.egg\pyad\adobject.py", line 318, in 
 update_attribute
 elif pyadutils.generate_list(newvalue) != self.get_attribute(attribute):
 AttributeError: 'str' object has no attribute 'get_attribute'

这使我假设我需要将属性类型从str更改为其他内容。我已经验证邮件是正确的属性名称。

我知道ldap连接正常,因为我可以使用类似的脚本创建用户。

1 个答案:

答案 0 :(得分:0)

您的问题是如何使用pyad。 特别是在这一行:

jQuery(document).ready(function(){
var trackingIds = ["elementid"];

for(i=0; i<trackingIds.length; i++){
    var el_id = jQuery('#'+trackingIds[i]);
    console.log(el_id);
    console.log(trackingIds[i]);
    el_id.click(function() { Click(trackingIds[i]);});
    el_id.mouseover(function() { View(trackingIds[i]);});
}
});

function Click(a) {
 //do stuff...
 console.log("Click was called from:"+a);
}

function View(b){
 // do stuff..
 console.log("View was called from:"+b)
}

如果我们查看source of pyad.adobject.ADObject,我们可以看到以下内容:

pyad.adobject.ADObject.update_attribute(self='testuser1', attribute='mail', 
newvalue='my@email.com')

def update_attribute(self, attribute, newvalue, no_flush=False): """Updates any mutable LDAP attribute for the object. If you are adding or removing values from a multi-valued attribute, see append_to_attribute and remove_from_attribute.""" if newvalue in ((),[],None,''): return self.clear_attribute(attribute) elif pyadutils.generate_list(newvalue) != self.get_attribute(attribute): self._set_attribute(attribute, 2, pyadutils.generate_list(newvalue)) if not no_flush: self._flush() 这里不是函数的参数,它是对类实例的引用。您的来电包括self self='testuser1'

请查阅有关如何使用此功能/功能/模块here的文档。您会注意到没有“自我”......除了查看源代码之外,我不确定您是如何得出所需的结论str

我无法测试以下内容,但这大致是如何运作的:

self