Home  Tutorials  Powershell


Téléchargement en masse des managers des employés dans AD en utilisant un CSV (FR)

Téléchargement du Script - Galerie Microsoft Technet par Ahmed Malek


Le script suivant fournit un moyen facile et efficace pour télécharger les managers des employés dans Active Directory en se basant sur l'utilisation d'un fichier CSV comme entrée. Il repose en fait sur ​​l'utilisation de l'attribute sAMAccountName des employés et des managers mais peut être mis à jour pour utiliser d'autres critères (exemple: adresses e-mail).


Ci-joint un exemple de fichier CSV à fournir comme entrée (le fichier CSV input.csv doit être ajouté dans le même dossier que le script PowerShell): input.csv.
 
 
PowerShell
____________________________________________________________________________
###############################################################
# Update_Manager_v1.0.ps1
# input : n/a
# output : none (logs)
# Version 1.
# Changelog : n/a
# MALEK Ahmed - 02 / 06 / 2013
###################

##################
#--------Config
##################

$adPath="LDAP://DC=contoso,DC=msft"


##################
#--------Main
##################

#LDAP connection
$objDomain=New-Object System.DirectoryServices.DirectoryEntry($adPath)
#Doing an LDAP search
$ObjSearchemployee=New-Object System.DirectoryServices.DirectorySearcher($ObjDomain)
$ObjSearchmanager=New-Object System.DirectoryServices.DirectorySearcher($ObjDomain)
#Operations on user accounts
Import-Csv .\input.csv -Delimiter ';' | Foreach-Object {
   $ObjSearchemployee.Filter = "(&(objectCategory=person)(objectClass=user)(sAMAccountName="+ $_.employee.trim() +"))"
   $allSearchResultemployee = $ObjSearchemployee.FindAll()
   foreach ($objSearchResultemployee in $allSearchResultemployee)
   {
      $objUseremployee=New-Object System.DirectoryServices.DirectoryEntry($objSearchResultemployee.Path)
      $ObjSearchmanager.Filter = "(&(objectCategory=person)(objectClass=user)(sAMAccountName="+ $_.manager.trim() +"))"
      $allSearchResultmanager = $ObjSearchmanager.FindAll()
      foreach ($objSearchResultmanager in $allSearchResultmanager)
      {
         $objUsermanager=New-Object System.DirectoryServices.DirectoryEntry($objSearchResultmanager.Path)
         $objUseremployee.manager = $objUsermanager.distinguishedname
      }
      $objUseremployee.CommitChanges()
"" + $objUsermanager.displayName + " is now the manager of " + $objUseremployee.displayName + ""
   }
}