是否可以在python中返回AD中的所有计算机

时间:2012-01-11 17:10:40

标签: python windows active-directory

如何在AD中搜索所有计算机名称?

2 个答案:

答案 0 :(得分:1)

这不是很棒的代码 - 如果您对Windows API足够熟悉,我建议您使用win32con这样做。但是,这非常实用:

import subprocess

splitstring = "\\r\\n"
bCompList = subprocess.check_output(['dsquery', 'computer', 'domainroot',
                                     '-scope', 'subtree', '-limit', '0'])
compList = str(bCompList)[2:-5].split(splitstring)

subprocess模块用于运行外部命令;我建议reading up on the documentationsubprocess.check_output从stdout捕获并返回命令的输出。 (注意命令是一个列表。这很重要!)

在这种情况下,我们会使用dsquery computer查询所有计算机对象('domainroot')的整个域('limit', '0')。这将返回一个二进制字符串 - 存储在bCompList

由于它是二进制字符串,我们可能希望将其转换为“标准”。要使用的字符串格式 - 这就是我们使用str()的原因。我们可以使用切片来修剪“垃圾”。字符(" b"表示字符串是二进制,尾随'\\r\\n'垃圾。)然后,split()使用该结果字符串将其分解列表。

顺便提一下,如果要修剪每个计算机对象周围的引号dsquery computer,请将切片更改为[3:-6]并将splitstring = "\\r\\n"更改为splitstring = "\"\\r\\n\""

此代码有两个重要注意事项:

  • 必须使用Windows" AD DS管理单元和命令行工具"在计算机上运行。已安装功能(至少,它们是在Windows Server 2008 R2中调用的内容。)
  • 您需要以具有适当权限的AD用户身份登录。 (或者,您可以在命令参数列表中包含'-u', username, '-p', password,将usernamepassword替换为相应的凭据。)

答案 1 :(得分:0)

我认为你可以在Active Directory Cookbook Python stuff找到你想要的东西。