2009-10-06 6 views
4

J'envisage d'écrire des scripts Perl qui interagissent avec Active Directory. Étant un peu nouveau pour Perl, je me demandais s'il y avait des modules spécifiques, des outils, des techniques, etc. En ce moment, je cherche seulement à tirer l'information d'utilisateur pour traiter avec le manuscrit.Comment puis-je utiliser Active Directory à partir de Perl?

+1

AD est LDAP. Parlez à AD comme vous le feriez avec un serveur LDAP. – jrockway

Répondre

1

D'après ce que je comprends, il y a deux options:

  • module OLE :: Win32
  • Execute outils externes (suchs DSQuery, dsget, etc.) et analyser la sortie.

Je n'ai pas beaucoup d'expérience avec Win32 :: Ole, peut-être que quelqu'un d'autre peut développer un peu.

6

La meilleure source de Active Directory example code in Perl is available here. C'est de Robbie Allen, le co-auteur de l'excellent Active Directory Cookbook d'O'Reilly.

Here is an example de leur code de livre de cuisine:

# 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 ne publiez pas de liens d'affiliation pour éviter que votre réponse ne soit marquée comme spam. –

+0

Mon diable, je ne savais pas que c'était. Je viens d'attraper leur lien Amazon de leur site sans y penser. Merci d'avoir réparé! – Mick

+0

Je reçois une erreur ("Table n'existe pas") en utilisant ce code. J'ai essayé de remplacer le $ strDomainDN avec quelque chose que je pense est bon pour mon entreprise, mais il doit être faux. Comment trouvez-vous le DN? – jimtut