【问题标题】:Import users into Active Directory from CSV/Excel将用户从 CSV/Excel 导入 Active Directory
【发布时间】:2011-10-06 15:39:10
【问题描述】:

如何将一组用户导入 Active Directory 组织单位(我的用户唯一有权访问的单位)。我希望能够从 CSV 或 Excel 文件中导入用户和密码,并将帐户和密码设置为不过期。

可以吗?

【问题讨论】:

    标签: import active-directory import-from-excel


    【解决方案1】:

    如果您可以使用 PowerShell,这里是脚本的开头:

    # Imput of the password 
    $defMDP = Read-Host "Entrez le mot de passe par défaut : " #-asSecureString
    $utilisateurs = Import-csv c:\pgdvlp\MesUtilisateurs.csv
    
    foreach ($utilisateur in $utilisateurs)
    {
      # Create an AD connexion
      $urlLDAP = "LDAP://"+ $utilisateur.silLDAPA + "/" + $utilisateur.silOU + "," + $utilisateur.silLDAPB
      $objOUCreation = [ADSI] $urlLDAP
    
      # Create the user object
      $strUtilisateur = $utilisateur.silPrenom + " " + $utilisateur.silNom
      $objUtilisateur = $objOUCreation.create("inetOrgPerson", "cn=" + $strUtilisateur)
      $objUtilisateur.SetInfo()
    
      # Put the account parameters
      $strLogin = $utilisateur.silPrenom[0] + $utilisateur.silNom
      $objUtilisateur.samaccountname = $strLogin
      $objUtilisateur.givenName = $utilisateur.silPrenom
      $objUtilisateur.sn = $utilisateur.silNom
      $objUtilisateur.displayName = $utilisateur.silPrenom + " " + $utilisateur.silNom
      $objUtilisateur.userPrincipalName = $strLogin + "@" + $utilisateur.silDomaine
      $objUtilisateur.company = $utilisateur.silSociete
      $objUtilisateur.department = $utilisateur.silDepartment
      $objUtilisateur.title = $utilisateur.silTitre
      $objUtilisateur.mail = $utilisateur.silAddresseMail
      $objUtilisateur.telephoneNumber = $utilisateur.silNumTel
    
      # put the de password
      $objUtilisateur.SetPassword($defMDP)
      $objUtilisateur.pwdLastSet = 0
    
      # put the account state
      $objUtilisateur.userAccountControl = $utilisateur.silEtatCompte
    
      # write the datas
      $objUtilisateur.SetInfo()
    }
    

    这是 VBScript 中的一些内容(对不起,法语中的 vars 名称):

    '==========================================================================
    '
    ' NAME: CREATEUSER.VBS
    '
    ' AUTHOR: JPB , Silogix
    ' DATE  : 29/06/2009
    '
    ' COMMENT: 
    '
    '==========================================================================
    Option Explicit
    On Error Resume Next
    
    '==========================================================================
    ' User creation
    '==========================================================================
    Const UF_NORMAL_ACCOUNT = 512 '0x0200
    Function createUser(ou, nom, prenom, telephone, domaine)
      On Error Resume Next
      Dim L1 ' Première lettre du prénom
      Dim Login ' Identifiant de connexion
      Dim EMail ' Adresse de courrier
      Dim commonName
      Dim Password
      Dim newUser
      Dim mail
      Dim strwhereToCreate
      Dim ouWhereToCreate
    
      commonName = "CN=" & prenom & " " & nom
      Password = "test.2011"
      L1 = Mid(prenom, 1, 1)
      Login = L1&"."&nom
      mail = Login & "@" & domaine  
      Err.Clear
      set newUser = ou.Create ("user", commonName)
      newUser.put "userPrincipalName", mail
      newUser.put "samAccountName", Login
      newUser.SetInfo
      If (Err.number <> 0) Then
        createUser = Err.number 
        Exit function
      End If
    
      newUser.put "userAccountControl", UF_NORMAL_ACCOUNT
      newUser.put "telephoneNumber", telephone
      newUser.SetPassword Password
      newUser.SetInfo
    
      createUser = 0
    
    End Function
    
    '==========================================================================
    ' Test of command line arguments
    '==========================================================================
    If WScript.Arguments.Count <> 1 Then
      WScript.Echo "Attention : Il faut au moins un paramètre"
      WScript.Echo "Exemple : CreateUser.vbs c:\temp\users.csv"
      WScript.Quit(1)
    End If
    
    Dim machine
    Dim oRootDSE ' Root Directory Service Specific Entry
    Dim ofso ' Acces to file system
    Dim oUsersFile ' The user file
    Dim oADSI ' Acces to ADSI
    Dim strwhereToCreate ' Target OU string
    Dim ouWhereToCreate ' Target OU object
    
    set ofso = CreateObject("Scripting.FileSystemObject")
    ' Does file exists
    If ofso.FileExists(WScript.Arguments(0)) = False Then
      WScript.Echo Err.Description & " : " &  WScript.Arguments(0)
      WScript.Quit(2)  
    End If
    
    ' AD Connexion
    machine = "192.168.183.138"
    Set oRootDSE = GetObject("LDAP://" & machine & "/RootDSE")
    strwhereToCreate = "ou=OU," & oRootDSE.get("defaultNamingContext")
    Set oADSI = GetObject("LDAP:")
    Set ouWhereToCreate = oADSI.openDsObject("LDAP://" & machine & "/"&strwhereToCreate, "societe\administrateur", "test.2011", 1)
    
    Set oUsersFile = ofso.OpenTextFile(WScript.Arguments(0))
    Do While Not oUsersFile.AtEndOfStream
      Dim arrArgUser
      Dim strLine 
    
      strLine = oUsersFile.ReadLine
      arrArgUser = split(strLine,";")
      If arrArgUser(0) <> "Prenom" Then
        Dim Rc
        Rc = 0
        Rc = createUser(ouWhereToCreate, arrArgUser(1), arrArgUser(0), arrArgUser(4), "societe.fr")  
        If Rc <> 0 Then
          WScript.Echo "Impossible de Créér " & arrArgUser(0) & " " & arrArgUser(1) & " erreur " & Rc
        End If
      End If
    
    Loop
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-25
      • 1970-01-01
      相关资源
      最近更新 更多