【发布时间】:2018-05-10 08:46:03
【问题描述】:
PowerShell 能够提取 1492 条记录的列表。当我将 Python 与 ldap3 模块一起使用时,我遇到了 1000 条记录的限制。请帮我更改 Python 代码以超出限制。
PowerShell 输入:get-aduser -filter * -SearchBase "OU=SMZ USERS,OU=SMZ,OU=EUR,DC=my_dc,DC=COM" | Measure-Object
输出: 计数:1492 平均的 : 总和: 最大 : 最低限度 : 属性:
import json
from ldap3 import Server, \
Connection, \
AUTO_BIND_NO_TLS, \
SUBTREE, \
ALL_ATTRIBUTES
def get_ldap_info(u):
with Connection(Server('my_server', port=636, use_ssl=True),
auto_bind=AUTO_BIND_NO_TLS,
read_only=True,
check_names=True,
user='my_login', password='my_password') as c:
c.search(search_base='OU=SMZ Users,OU=SMZ,OU=EUR,DC=my_dc,DC=com',
search_filter='(&(samAccountName=' + u + '))',
search_scope=SUBTREE,
attributes=ALL_ATTRIBUTES,
size_limit = 0,
paged_criticality = True,
paged_size = None,
#attributes = ['cn'],
get_operational_attributes=True)
content = c.response_to_json()
result = json.loads(content)
i = 0
for item in result["entries"]:
i += 1
print(i)
get_ldap_info('*')
【问题讨论】:
-
Powershell 中的 AD CMDlet 使用 Active Directory Web 服务与 DC 通信,因此与使用 System.DirectoryServices(我也限制为 1000 个对象)相比,它们的行为可能不同
-
Get-Aduser有一个-ResultSetSize参数来设置限制,如果有帮助,请检查 pythoh 代码:novell.com/coolsolutions/tip/18274.html -
如果你想分页搜索,似乎你不应该将
paged_size设置为None。 -
@Bill_Stewart 更改 paged_size 并不能解决问题。如果我将它设置为 10,它会拉出 10 条记录。如果我将其设置为 1500,它会拉动 1000。
-
我相信你必须同时设置
paged_size和size_limit。但除此之外,我不是该特定模块的专家。
标签: python powershell active-directory ldap