Importation depuis fichiers csv d'utilisateurs, groupes avec inclusion de membres dans les groupes.

Créer un fichier csv, encodé en UTF8, pour les users et un autre pour les groups formaté comme suit pour le premier :

Name;Firstname;login;email

Et comme suit pour le second :

Name;Members

Les membres peuvent être aussi bien des groupes que des utilisateurs existant. Le scope des groupe est réglé sur DomainLocal, adapté le au besoin mais il n’a pas été prévu de les gérer finement.
Cependant, il ne serait pas bien compliqué de le gérer. Pour cela ajouter une colonne au fichier csv des groupes avec Scope et modifier le paramètre lors de la création du groupe concernant le scope.

Les utilisateurs se voient attribuer un mot de passe par défaut et devront en changer lors de leur prochaine connexion. Ainsi l’administrateur n’en aura pas connaissance.

Import-Module ActiveDirectory

$Users = Import-Csv -Delimiter ";" -Path ".\users.csv"
$Groups = Import-Csv -Delimiter ";" -Path ".\groups.csv"

foreach ($User in $Users)
{
    $CN = "CN=Users,DC=domain,DC=com"
    $Password = "p455w0rD"
    $Detailedname = $User.Firstname + " " + $User.name
    New-ADUser -Name $Detailedname -SamAccountName $User.login -UserPrincipalName $User.login -DisplayName $Detailedname -EmailAddress $User.email -GivenName $User.Firstname -Surname $User.Name -AccountPassword (ConvertTo-SecureString $Password -AsPlainText -Force) -Enabled $true -ChangePasswordAtLogon $true -Path $CN
}

foreach ($Group in $Groups)
{
    New-ADGroup -Name $Group.Name -GroupScope 0
    foreach ($User in $Group.Members.Split(","))
    {
        Add-ADDGroupMember -Identity $Group.Name -Members $User
    }
}

Dernier point, le script powershell (extension .ps1) ne pourra être exécuté qu’uniquement si la politique d’exécution de script l’autorise sur le serveur. Pour la connaitre, exécuter la commande suivante :

C:> Get-ExecutionPolicy

Par défaut, elle devrait être réglée sur Restricted. Il est disponible les politiques suivantes :

  • Restricted – Aucun script ne peut être exécuté. Windows PowerShell ne peut être utilisé qu’uniquement en mode interactif.
  • AllSigned – Seul les scripts signés par un éditeur de confiance peuvent être exécutés.
  • RemoteSigned – Les scripts téléchargés doivent être signés par un éditeur de confiance avant de pouvoir être exécutés. Les scripts créés localement peuvent être exécutés
  • Unrestricted – Aucune restriction; Tous les scripts Windows PowerShell peuvent être exécutés.

Un bon compromis est RemoteSigned, pour réglée la politique d’exécution :

Set-ExecutionPolicy RemoteSigned