gpt4 book ai didi

python - 克服 Active Directory 的 1000 条记录限制

转载 作者:行者123 更新时间:2023-11-28 21:38:56 25 4
gpt4 key购买 nike

PowerShell 能够提取 1492 条记录的列表。当我将 Python 与 ldap3 模块一起使用时,我遇到了 1000 条记录的限制。请帮助我更改 Python 代码以超出限制。

PowerShell 输入:get-aduser -filter * -SearchBase "OU=SMZ USERS,OU=SMZ,OU=EUR,DC=my_dc,DC=COM"|测量对象

输出:计数 : 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('*')

最佳答案

如果您将代码更改为使用 extend.standard 命名空间的 paged_search 方法,您应该能够检索到您要查找的所有结果。

请注意,您需要以不同方式对待响应对象。

def get_ldap_info(u):
with Connection(Server('XXX', port=636, use_ssl=True),
auto_bind=AUTO_BIND_NO_TLS,
read_only=True,
check_names=True,
user='XXX', password='XXX') as c:

results = c.extend.standard.paged_search(search_base='dc=XXX,dc=XXX,dc=XXX',
search_filter='(&(samAccountName=' + u + '))',
search_scope=SUBTREE,
attributes=ALL_ATTRIBUTES,
#attributes = ['cn'],
get_operational_attributes=True)


i = 0
for item in results:
#print(item)
i += 1
print(i)
get_ldap_info('*')

关于python - 克服 Active Directory 的 1000 条记录限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47505403/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com