[Màj] Importation depuis fichiers CSV d'OU, Groupes et Users dans AD

Mise à jour du script d’importation des OU, Groupes et Users dans AD. Avec la possibilité de créer des OU dans des OU.

Le format des fichiers csv est désormais le suivant :

Pour les utilisateurs :

Name;Firstname;Login;OU;Roaming

Pour les groupes :

Name;OU;Members

Et les OU :

Name;OU

Roaming est un champ optionnel permettant de définir les utilisateurs nomades. Ceux-ci seront intégrés dans un groupe pour les utilisateurs nomades en plus de leurs autres groupes. Peu importe la valeur spécifiée (mettre « Y » pour taguer un utilisateur comme nomade)
Les utilisateurs nomades sont les utilisateurs pouvant se déplacer avec leur poste de travail (eg : un ordinateur portable).

Je vous copie/colle le script sinon reportez vous au billet précédent sur ce sujet pour plus de détail :

Import-Module ActiveDirectory


$OUs = Import-Csv -Delimiter ";" -Path ".\ous.csv"
foreach ($OU in $OUs)
{
    if ($OU.OU)
    {
        $OU2get = $OU.OU
        $OU_object = Get-ADOrganizationalUnit -Filter {Name -like $OU2get}
        $OU_Path = $OU_object.DistinguishedName
    }
    else
    {
         $OU_Path = "DC=ranou,DC=fr"
    }

    New-ADOrganizationalUnit -Name $OU.Name -Path $OU_Path -ProtectedFromAccidentalDeletion $false

    $Group_Path = ("OU=" + $OU.Name + "," + $OU_Path)
    New-ADGroup -Name ("DL_" + $OU.Name + "_RO") -GroupScope 0 -Path $Group_Path
    New-ADGroup -Name ("DL_" + $OU.Name + "_RW") -GroupScope 0 -Path $Group_Path
    echo (“OU: “ + $OU.Name + “ created with default RO and RW groups”)
}

$Users = Import-Csv -Delimiter ";" -Path ".\users.csv"
foreach ($User in $Users)
{
    $OU2get = $User.OU
    $OU_object = Get-ADOrganizationalUnit -Filter {Name -like $OU2get}
    $OU_Path = $OU_object.DistinguishedName

    $Password = "p455w0rD"
    $DetailedName = $User.Firstname + " " + $User.Name
    $Login = $User.Login
    New-ADUser -Name $DetailedName -SamAccountName $Login -UserPrincipalName $Login -DisplayName $DetailedName -GivenName $User.FirstName -Surname $User.Name -AccountPassword(ConvertTo-SecureString $Password -AsPlainText -Force) -Enabled $true -ChangePasswordAtLogon $true -Path $OU_Path
    echo (“User: “ + $DetailedName + “ created”)

    if ($User.Roaming)
    {
        Add-ADGroupMember -Identity "Utilisateurs nomades" -Members $Login
        echo (“User: “ + $DetailedName + “ added to roaming group")
    }
}

$Groups= Import-Csv -Delimiter ";" -Path ".\groups.csv"
foreach ($Group in $Groups)
{
    $OU2get = $Group.OU
    $OU_object = Get-ADOrganizationalUnit -Filter {Name -like $OU2get}
    $OU_Path = $OU_object.DistinguishedName

    $GroupName = "G_" + $Group.Name
    $GroupNameRO = "DL_" + $Group.Name + "_RO"
    $GroupNameRW = "DL_" + $Group.Name + "_RW"

    New-ADGroup -Name $GroupName -GroupScope 1 -Path $OU_Path
    New-ADGroup -Name $GroupNameRO -GroupScope 0 -Path $OU_Path
    New-ADGroup -Name $GroupNameRW -GroupScope 0 -Path $OU_Path

    foreach ($User in $Group.Members.Split(","))
    {
        Add-ADGroupMember -Identity $GroupName -Members $User
    }
    echo (“Group: “ + $GroupName + “ created with users ” + $Group.Members + “, as members.”)
}