2009-10-06 53 views
4

我正在考慮編寫一些與Active Directory交互的Perl腳本。對於Perl來說有點新,我想知道是否有任何人會建議我使用的特定模塊,工具,技術等。截至目前,我只是想拉用戶信息來處理腳本。我如何使用Perl從Active Directory開始工作?

+1

AD是LDAP。像AD服務器那樣與AD交談。 – jrockway 2009-10-06 23:22:29

回答

1

據我所知,有兩種選擇:

  • 的Win32 :: OLE模塊
  • 執行外部工具(suchs DSQUERY,DSGET等),並解析輸出。

我對Win32 :: Ole沒有多少經驗,可能是別人可以詳細說明一下。

6

活動目錄的最佳來源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; 
} 
+0

@Mick不會發佈會員鏈接,以避免您的答案被標記爲垃圾郵件。 – 2009-10-06 15:06:29

+0

我的不好,我沒有意識到它是。我只是在沒有想到的情況下從他們的網站上抓住他們的亞馬遜鏈接謝謝修復! – Mick 2009-10-06 15:14:59

+0

使用此代碼出現錯誤(「表不存在」)。我試圖用我認爲適合我公司的$ strDomainDN替代,但它一定是錯的。你如何找出DN? – jimtut 2009-10-06 16:16:57