【问题标题】:How can I work with Active Directory from Perl?如何从 Perl 使用 Active Directory?
【发布时间】:2009-10-07 20:53:31
【问题描述】:

我正在考虑编写一些与 Active Directory 交互的 Perl 脚本。作为 Perl 的新手,我想知道是否有任何人会建议我使用的特定模块、工具、技术等。截至目前,我只想提取用户信息以使用脚本进行处理。

【问题讨论】:

  • AD 是 LDAP。像与 LDAP 服务器一样与 AD 交谈。

标签: perl active-directory ldap


【解决方案1】:

Active Directory 的最佳来源example code in Perl is available here。来自 O'Reilly 的优秀 Active Directory Cookbook 的合著者 Robbie Allen。

Here is an example 来自他们的食谱代码:

# This Perl code finds all disabled user accounts in a domain.

# ---------------------------------------------------------------
# Adapted from VBScript code contained in the book:
#      "Active Directory Cookbook" by Robbie Allen
# ISBN: 0-596-00466-4
# ---------------------------------------------------------------

# ------ SCRIPT CONFIGURATION ------
my $strDomainDN = "<DomainDN>";    # e.g. dc=rallencorp,dc=com
# ------ END CONFIGURATION ---------
use Win32::OLE;
$Win32::OLE::Warn = 3;
my $strBase   =  "<LDAP://" . $strDomainDN . ">;";
my $strFilter = "(&(objectclass=user)(objectcategory=person)" . 
                "(useraccountcontrol:1.2.840.113556.1.4.803:=2));";
my $strAttrs  = "name;";
my $strScope  = "subtree";

my $objConn = Win32::OLE->CreateObject("ADODB.Connection");
$objConn->{Provider} = "ADsDSOObject";
$objConn->Open;
my $objRS = $objConn->Execute($strBase . $strFilter . $strAttrs . $strScope);
$objRS->MoveFirst;
while (not $objRS->EOF) {
    print $objRS->Fields(0)->Value,"\n";
    $objRS->MoveNext;
}

【讨论】:

  • @Mick 不要发布附属链接,以免您的答案被标记为垃圾邮件。
  • 我的错,我没有意识到它是。我只是不假思索地从他们的网站上抓取了他们的亚马逊链接。感谢修复!
  • 使用此代码时出现错误(“表不存在”)。我试图用我认为适合我公司的东西替换 $strDomainDN,但它一定是错误的。如何找到 DN?
  • 这是一个 VBScript 的链接,它将显示您的顶级 DN:visualbasicscript.com/Get-DN-of-Computer-m27103.aspx
  • 只需在vbscript末尾添加以下内容并运行:MsgBox sDNSDomain
【解决方案2】:

据我了解,有两种选择:

  • Win32::OLE 模块
  • 执行外部工具(例如 DSQuery、DSGet 等)并解析输出。

我对 Win32::Ole 没有太多经验,可能其他人可以详细说明一下。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-23
    • 2019-11-09
    • 1970-01-01
    • 2022-11-25
    • 2023-03-26
    相关资源
    最近更新 更多