Nous avons utilisé plusieurs Script : Script création des utilisateurs : Le but était de créer 90 utilisateurs en se basant sur un fichier CSV préalablement rempli et les mettant dans la bonne OU. Nom du Script : CréationUtilisateurs3.ps1. #Importe le module AD avec les variables d environnement $utils=import-csv -delimiter ";" -path ".\Users2.csv" #Importation du CSV avec les utilisateurs - delimiter défini les séparateurs de champs. path le chemin. #Boucle pour chaque élément du tableau users2.csv. Pour chaque ligne dans le fichier utils.csv $categorie=$util.categorie #Correspond à la colonne catégorie du CSV #Correspond à la colonne service du CSV $login=$util.login #Et ainsi de suite $pass=$util.password $nom=$util.nom $prenom=$util.prenom $nomcomplet=$util.fullname $ou="ou=utilisateurs,ou=$categorie,ou=$service,ou=merignac,dc=cimenttech,dc=loc"#chemin de l OU ou sont créés les utilisateurs New-aduser -surname $nom -name $nomcomplet -department $service -enabled $true -path $ou - accountpassword (convertto-securestring $pass -AsPlainText -force) -samaccountname $login - userprincipalname $login -givenname $prenom -displayname $nomcomplet #new adduser pour ajouter des utilisateurs/ -enabled $true pour activer le compte / path=chemin AD / mot de passe converti en chaine sécurisé / #fin de boucle une fois le script terminé. Script qui met les utilisateurs dans les Groupes respectif : Une fois les utilisateurs crée, nous avons créé le script permettant de mettre les utilisateurs dans les groupes AD correspondant Nom du script : UtilisateursDansGroupe.ps1 $groupe=$util.groupe
$login=$util.login $ou="cn=$groupe, ou=groupes Globaux,ou=Groupes,dc=cimenttech,dc=loc"#Chemin ou est le groupe variable. add-adgroupmember -identity $ou -members $login#,identity : spécifie le groupe, members spécifie l utilisateur membre de ce groupe. Script Création Dossier perso utilisateurs : Pour créer nos 90 Dossiers nous avons utilisé la aussi un script, qui va chercher dans un.csv le nom et le chemin du dossier. Nom du Script : CreationDeDossierPerso.ps1 $Nomdedossier=$util.fullname $chemin="\\cimenttech.loc\stockage\utilisateurs\commun $service" New-Item -ItemType "directory" -name $nomdedossier -path $chemin # Nouvel objet de type «repertoire» avec nom variable et dossier variable selon le service. Script de Suppression des Droits ACL existants et suppression de l héritage. Avant d ajouter nos Droits ACL (Acces Control List) il fallait supprimer les droits sur chaque Dossier et l heritage de chaque dossier précédemment crée. Nom du Script : SupHeritageGroup2.ps1 $chemin="\\cimenttech.loc\stockage\utilisateurs\commun $service\$nomdedossier"
#Suppression de l'héritage NTFS sur le dossier $isprotected = $true $preserveinheritance = $true $acl = (Get-Item $chemin).getaccesscontrol("access") $acl.setaccessruleprotection($isprotected, $preserveinheritance) Set-Acl -AclObject $acl $chemin #Suppression Droits NTFS sur le repertoire, $acl = Get-Item $chemin get-acl $acl.access Where-Object $chemin ForEach-Object$Acl.RemoveAccessRuleSpecific($_) Set-ACL $chemin $acl #$acl where $_.IdentityReference -eq $ou %$acl.removeaccessrule($_) Script qui applique les Droits ACL pour chaque service Nous appliquons un script qui applique les droits ACL de chaque Groupe ou utilisateurs sur les dossiers personnel correspondant. Nom des Scripts Ajout ACLadministrateur.ps1 Ajout ACLDirection.ps1 AjoutACLUtilisateurs.ps1 AjoutAclInformatique.ps1 $login=$util.login $chemin="\\cimenttech.loc\stockage\utilisateurs\commun $service\$nomdedossier" # Déclaration du groupe Administrateurs $admins = new-object Security.Principal.NTAccount("cimenttech\Admins du domaine") # Lecture de l'acl du dossier : $acl= get-acl -path $chemin # Assignation du groupe Administrateurs en tant que propriétaire :
$acl.setowner($admins) # Création d'une ACE (permission) donnant le droit de control total pour $l'utilisateur concerné. Le 3 spécifie l'héritage des dossiers et sous dossiers/fichier enfants, allow = autorisé $ar= New-Object system.security.accesscontrol.filesystemaccessrule("cimenttech\$login","fullcontrol",3,0, "Allow") # # Ajout de la permission de control total pour l Utilisateur : $acl.setaccessrule($ar) # Application de l'acl modifiée sur le dossier : Set-Acl -Path $chemin $acl Autre exemple script utilisé pour appliquer les droits, ici administrateur : $login=$util.login $acl = get-acl "\\cimenttech.loc\stockage\utilisateurs\commun $service\$nomdedossier" # Lecture de l'acl du dossier : $arguments = "cimenttech.loc\admins du domaine","fullcontrol",3,0,"allow"#spécifie les droits a appliquer, avec l héritage enfant et l option autorisé. $accessrule = New-Object System.Security.AccessControl.FileSystemAccessRule $arguments #création de l ACE avec les permissions spécifié dans la variable argument # Application de l'acl modifiée sur le dossier : $acl.setaccessrule($accessrule) $acl Set-Acl "\\cimenttech.loc\stockage\utilisateurs\commun $service\$nomdedossier" Script qui monte les lecteurs réseaux : Nous avons monté les lecteurs réseaux en script Power Shell sauf le commun qui nous avons déployé en GPO.
Nom des Scripts : LecteurReseauxAdministratif.ps1 LecteurReseauxXXX.ps1 $lecteur=new-object -ComObject Wscript.Network $lecteur.mapnetworkdrive("u:", "\\cimenttech.loc\stockage\utilisateurs\commun Administratif") Script imprimante par defaut : Ayant des soucis à appliquer l option imprimante par défaut par GPO nous avons créés des scripts power Shell pour les imprimantes voulu: Nom des Scripts : PrintDefautAdministratif.ps1 PrintDefautXXX.ps1 (New-Object -ComObject WScript.Network).SetDefaultPrinter('\\DC1\Print Administratif') Script net user Ce script met la plage de connexion horaire pour les utilisateurs des services spécifiés dans le cahier des charges. Il a été fait en point.bat, nous avons rencontré des difficultés avec l option net User en powershell. Il va chercher la liste des utilisateurs spécifiés dans un fichier au format texte (.TXT). http://ss64.com/nt/for_f.html # aller dans le disque c:\ cd c:\ #boucle For /F (signifie boucle a travers la sortie d une commande), ici «delim» signifie l espace comme séparateur, %r correspond à la ligne du.txt. «Pour chaque ligne entre les séparateurs dans le fichier horairebat.txt fait la commande net user». For /F "delims=" %r in (horairebat.txt) do (net user %r /time:lundi-vendredi,7am-8pm) pause