none
Créer des groupes à partir d'un fichier CSV RRS feed

  • Question

  • Bonjour,

    J'ai un fichier CSV avec des utilisateurs et des branches d'une entreprise (service info, comm, etc...)

    Je souhaiterai que lorsque j'exécute le script, si la branche n'existe pas, alors elle soit créée en tant que groupe.

    Avez-vous une solution ?

    Par avance, merci.

    R.

    vendredi 5 août 2016 22:23

Réponses

  • Bonsoir

    voici un script complet basé sur votre fichier, en supposant que "Name" correspond au login (SamAccountName)

    $users = import-csv -path "users.csv" -delimiter ";"
    
    #On boucle sur chaque user
    foreach($user in $users) 
    {
      $fname= $user.Fname
      $name= $user.Name
      $office= $user.Office
      $pass= $user.pass
      $dpt= $user.dpt
    
      $usr=get-aduser -Filter { samaccountname -eq $name}
    
      if ($usr){ echo "Utilisateur $usr existe déjà"}
      Else { 
        $passSecured=ConvertTo-SecureString -String $pass -AsPlainText
        new-AdUser -name "$fname" -samaccountname $name -office $Office -AccountPassword $passSecured
        echo "Utilisateur $name créé"
        }
    
      $grp=get-adgroup -Filter { samaccountname -eq $dpt}
      if ($grp) { echo "Groupe $dpt trouvé" }
      else {
        $grp=new-adgroup -Name $dpt -SamAccountName $dpt -GroupCategory Security -GroupScope Global
        echo "Groupe $dpt créé" }
    
      echo "Ajout de l'utilisateur $name dans le groupe $dpt"
      add-AdGroupMember $dpt -members $name
    }
    

    Ce script créée le compte dans le conteneur par défaut s'il n'existe pas dans l'AD.

    Le groupe est créé s'il n'existe pas.

    L'utilisateur est ajouté dans le groupe dans tous les cas.

    A bientôt,


    Thierry DEMAN. Exchange MVP. MCSE:Messaging 2013,MCSE:Server Infrastructure 2012(83 MCPs). MCSA Office 365 https://mvp.microsoft.com/en-us/mvp/Thierry%20Deman-7660 http://base.faqexchange.info

    samedi 6 août 2016 21:13

Toutes les réponses

  • Bonsoir,

    il n'y a pas de problème particulier à créer des groupes à partir d'un fichier texte. Les exemples sont nombreux!

    Quel est le format du fichier texte?

    A+


    Thierry DEMAN. Exchange MVP. MCSE:Messaging 2013,MCSE:Server Infrastructure 2012(83 MCPs). MCSA Office 365 https://mvp.microsoft.com/en-us/mvp/Thierry%20Deman-7660 http://base.faqexchange.info

    vendredi 5 août 2016 23:03
  • Bonjour,

    Merci pour votre réponse :-)

    C'est un fichier .csv

    Les libellés sont FName;Name;Office;pass;dpt

    Je vais importer classiquement chaque ligne.

    Pour le champ "dpt", je souhaiterai que Windows me créé un groupe, si ce groupe n'existe pas déjà, et qu'il inclut le user dedans.

    Pour le code de base, je fais :

    $users = import-csv -path "users.csv" -delimiter ";"
    
    #On boucle sur chaque user
    foreach($user in $users) 
    {
        $fname= $user.Fname
        $name= $user.Name
        $office= $user.Office
        $pass= $user.pass
        $dpt= $user.dpt #C'est ici que je souhaiterais rajouter la création ou l'intégration d'un groupe
        
    }

    Une idée ?

    Merci

    R.

    vendredi 5 août 2016 23:21
  • un truc du genre :

    if ((get-adgroup $dpt) -eq $null )

    {

    new-adgroup -Name $dpt -SamAccountName  -GroupCategory Security -GroupScope Global -DisplayName "RODC Administrators" -Path "CN=Users,DC=Fabrikam,DC=Com"

    }

    samedi 6 août 2016 05:20
    Modérateur
  • Merci pour votre retour.

    La console me retourne "Impossible de trouver l'objet". Je ne vois pas ce qui bloque.

    En fait, j'ai mon domaine avec différentes OU.

    L'OU "Employés" est divisée en différentes OU villes (Paris, LA, Tokyo, Rio).

    Chaque OU ville disposes de différents groupes qui doivent être créés via le fichier CSV.

    Une idée ?

    Merci

    samedi 6 août 2016 16:48
  • Bonsoir

    voici un script complet basé sur votre fichier, en supposant que "Name" correspond au login (SamAccountName)

    $users = import-csv -path "users.csv" -delimiter ";"
    
    #On boucle sur chaque user
    foreach($user in $users) 
    {
      $fname= $user.Fname
      $name= $user.Name
      $office= $user.Office
      $pass= $user.pass
      $dpt= $user.dpt
    
      $usr=get-aduser -Filter { samaccountname -eq $name}
    
      if ($usr){ echo "Utilisateur $usr existe déjà"}
      Else { 
        $passSecured=ConvertTo-SecureString -String $pass -AsPlainText
        new-AdUser -name "$fname" -samaccountname $name -office $Office -AccountPassword $passSecured
        echo "Utilisateur $name créé"
        }
    
      $grp=get-adgroup -Filter { samaccountname -eq $dpt}
      if ($grp) { echo "Groupe $dpt trouvé" }
      else {
        $grp=new-adgroup -Name $dpt -SamAccountName $dpt -GroupCategory Security -GroupScope Global
        echo "Groupe $dpt créé" }
    
      echo "Ajout de l'utilisateur $name dans le groupe $dpt"
      add-AdGroupMember $dpt -members $name
    }
    

    Ce script créée le compte dans le conteneur par défaut s'il n'existe pas dans l'AD.

    Le groupe est créé s'il n'existe pas.

    L'utilisateur est ajouté dans le groupe dans tous les cas.

    A bientôt,


    Thierry DEMAN. Exchange MVP. MCSE:Messaging 2013,MCSE:Server Infrastructure 2012(83 MCPs). MCSA Office 365 https://mvp.microsoft.com/en-us/mvp/Thierry%20Deman-7660 http://base.faqexchange.info

    samedi 6 août 2016 21:13
  • Super Merci :-)

    Je souhaiterais ajouter ces users et ces groupes dans des OU spécifiques.

    Sur la ligne 

    new-AdUser


    J'ajoute donc :

    -Path "OU=MonOU"

    Mais j'obtiens une erreur à la fin de ma requête "ObjectNotFound".

    Si je mets :

    -Path 'OU=MonOU,OU=UneSousOU'

    Je pourrais ajouter des éléments dans des sous OU ?

    Je n'ai pas trouvé s'il était possible d'attribuer plusieurs groupes à un user ?

    Merci de votre aide

    R.

    dimanche 7 août 2016 17:43
  • Bonsoir,

    pour les OUs, il faut indiquer le chemin complet...

    Exemples de chemin complet :

    'CN=Users,DC=fabrikam,DC=local'  (conteneur par défaut)

    'OU=MonOU,DC=fabrikam,DC=local'

    'OU=UneSousOU,OU=MonOU,DC=fabrikam,DC=local'

    On peut bien entendu mettre l'utilisateur dans un tas de groupes.... Le plus dur est de déterminer le format de fichier à mettre en œuvre pour cela.

    A bientôt,


    Thierry DEMAN. Exchange MVP. MCSE:Messaging 2013,MCSE:Server Infrastructure 2012(83 MCPs). MCSA Office 365 https://mvp.microsoft.com/en-us/mvp/Thierry%20Deman-7660 http://base.faqexchange.info

    dimanche 7 août 2016 22:25
  • Bonsoir,

    Merci, c'est tout bon ! :-)

    Pour naviguer dans les OU, il faut donc d'abord indiquer l'OU la plus profonde dans la hiérarchie.

    Merci à vous :-)

    mercredi 10 août 2016 20:33
  • Tout à fait !

    Thierry DEMAN. Exchange MVP. MCSE:Messaging 2013,MCSE:Server Infrastructure 2012(83 MCPs). MCSA Office 365 https://mvp.microsoft.com/en-us/mvp/Thierry%20Deman-7660 http://base.faqexchange.info

    mercredi 10 août 2016 21:19