exemple de script
Download
Report
Transcript exemple de script
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.
import-module activedirectory #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.
foreach ($util in $utils) #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
$service=$util.service #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
import-module activedirectory
$utils=import-csv -delimiter ";" -path ".\users2.csv"
foreach ($util in $utils)
{
$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
$utils=import-csv -delimiter ";" -path ".\users2.csv"
foreach ($util in $utils)
{
$Nomdedossier=$util.fullname
$service=$util.service
$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
import-module activedirectory
$utils=import-csv -delimiter ";" -path ".\users2.csv"
foreach ($util in $utils)
{
$nomdedossier=$util.fullname
$service=$util.service
$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
import-module activedirectory
$utils=import-csv -delimiter ";" -path ".\users2.csv"
foreach ($util in $utils)
{
$login=$util.login
$nomdedossier=$util.fullname
$service=$util.service
$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 :
import-module activedirectory
$utils=import-csv -delimiter ";" -path ".\users2.csv"
foreach ($util in $utils)
{
$nomdedossier=$util.fullname
$login=$util.login
$service=$util.service
$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