我在一家大型公司分公司的 IT 支持部门工作。
我必须管理包含所有用户、计算机等的数据库。我正在尝试找到一种方法来尽可能自动更新数据库,但 IT 基础设施人员没有给我足够的权限来使用 Active Directory 来转储用户,他们也没有时间给我所需的信息。
几天前,我在 Sysinternals 上找到了 Active Directory 资源管理器,它允许我浏览 Active Directory,我在那里找到了我需要的所有信息(用户名、真实姓名、创建日期、权限、公司等)。不幸的是,我无法将数据导出为人类可读的格式。我只能以机器可读的格式对整个数据库进行快照。制作快照需要几个小时,我担心基础设施人员不喜欢我定期制作整个快照。
您是否知道任何工具(最好是命令行)可以让我检索键的值或将其导出为 XML、CSV 等?
答案1
使用 Active Directory 的旧命令行工具转储到 CSV: http://support.microsoft.com/kb/298882
或者使用较新的 PowerShell 套件导出到 CSV、Excel 等。如果您不熟悉 Powershell 语法,PowerGUI 工具非常适合您。 http://www.powergui.org
或者使用不太旧但不太新的 VBScript 方法。以下是将所有用户的所有属性导出到 Excel 的示例 VBScript: http://gallery.technet.microsoft.com/scriptcenter/4d192f4d-2830-4a3e-9352-64a7e696a36e
微软在这里提供了大量的 PowerShell 和 VBScript 示例: http://gallery.technet.microsoft.com/ScriptCenter/
答案2
我将您的问题重新解释为:
如何以易于处理的格式将数据从 AD 中导出(无论是完整转储还是逐个对象)?
您需要熟悉 Powershell 和 ActiveDirectory 模块。您可以执行以下操作:
Import-Module ActiveDirectory
$me = Get-ADUser myUsername -Properties givenName,sn
Write-Output "My name is $($me.givenName) $($me.sn)."
或这个:
Import-Module ActiveDirectory
$subsetUsers = Get-ADUser -Filter * -SearchBase "ou=someou,dc=mydomain,dc=com"
或这个:
Import-Module ActiveDirectory
$allUsers = Get-ADUser -Filter *
Write-Output "I've found $($allUsers.Count) users in this domain - writing to CSV."
$allUsers | Export-CSV "myOutputFile.csv"
Powershell 是你最好的朋友。
答案3
首先,尝试与基础设施团队合作,如果您可以向他们解释您到底需要什么数据,他们可能会自动为您设置一些东西。
我在这里推荐两件事:
SVDE/LDIFDE 的实现。这些是命令行实用程序,可以导出您想要的任何信息。如果您想要处理某些内容,请使用 csvde,如果您想要完整备份或更改选择属性的能力,请考虑 ldifde。
http://technet.microsoft.com/en-us/library/cc787549%28WS.10%29.aspx
http://msdn.microsoft.com/en-us/library/ms870068%28v=exchg.65%29.aspx
Softerra LDAP 浏览器是一款出色的 GUI 工具,您可以用它来浏览“原始”AD。
寻找名为 ldap browser 的免费版本,而不是 ldap manager。从这里您可以右键单击任何对象并导出 ldifde。