如果启用了计算机,Python pyad查询不会返回

ibps3vxo  于 2023-03-04  发布在  Python
关注(0)|答案(2)|浏览(129)

我有一个问题与python3 pyad模块。我想查询我的活动目录环境中的所有PC与一些信息,如果他们被启用与否。
这是密码:

q = pyad.adquery.ADQuery()
q.execute_query(
    attributes = ["CN", "OperatingSystem", "OperatingSystemVersion", "Description", "Enabled"],
    where_clause = "objectClass = 'Computer'",
    base_dn = "OU=Client,OU=####,OU=########,DC=###############,DC=########,DC=local"
)

ad_result = []
for row in q.get_results():
    ad_result.append(row)
    print(row)

这是我得到的回报:

{'Enabled': None, 'Description': None, 'OperatingSystemVersion': '10.0 (17763)', 'OperatingSystem': 'Windows 10 Pro', 'CN': '<PC NAME>'}
{'Enabled': None, 'Description': None, 'OperatingSystemVersion': '10.0 (17763)', 'OperatingSystem': 'Windows 10 Pro', 'CN': '<PC NAME>'}
{'Enabled': None, 'Description': None, 'OperatingSystemVersion': '10.0 (17763)', 'OperatingSystem': 'Windows 10 Pro', 'CN': '<PC NAME>'}
{'Enabled': None, 'Description': None, 'OperatingSystemVersion': '10.0 (17763)', 'OperatingSystem': 'Windows 10 Pro', 'CN': '<PC NAME>'}
{'Enabled': None, 'Description': None, 'OperatingSystemVersion': '10.0 (17763)', 'OperatingSystem': 'Windows 10 Pro', 'CN': '<PC NAME>'}
{'Enabled': None, 'Description': None, 'OperatingSystemVersion': '10.0 (17763)', 'OperatingSystem': 'Windows 10 Pro', 'CN': '<PC NAME>'}
{'Enabled': None, 'Description': None, 'OperatingSystemVersion': '10.0 (17763)', 'OperatingSystem': 'Windows 10 Pro', 'CN': '<PC NAME>'}

所以我的问题是,不是得到"启用"状态为,我只得到。当我通过Powershell查询时,它工作得很好,但我真的很想使用python。我不想把一些Powershell csv导出到我的脚本中。如果有人有任何想法,我希望得到一个答案,谢谢。

cpjpxq1n

cpjpxq1n1#

要确定系统是否已启用,必须检查userAccountControl标志。
详细的标志信息可以在herehere中找到
通过将返回代码转换为十六进制,然后标记以2结尾的禁用系统,您可以轻松地分析enabled与disabled。
示例:

assets = ad_query.get_results()
for asset in assets:
    code = hex(asset["userAccountControl"])
        if code.endswith("2"):
        print(f"{asset["name"]} is DISABLED")
htrmnn0y

htrmnn0y2#

我不知道为什么会观察到这种行为,但我知道从哪里获取“Enabled”属性:

comp = adcomputer.ADComputer.from_cn("xxxxxxxx")
comp.get_user_account_control_settings()

将产生:

{'SCRIPT': False,
 'ACCOUNTDISABLE': False,
...

对于启用的机器和禁用的机器:

{'SCRIPT': False,
 'ACCOUNTDISABLE': True,
...

对于说明字段:

comp.get_allowed_attributes()

如果属性名称在上述调用的输出中,则可以使用以下命令进行查询:

comp.get_attribute('description')

相关问题