Question
aide pour corriger script AD
- garrigues
- Auteur du sujet
- Hors Ligne
- Membre junior
Réduire
Plus d'informations
- Messages : 26
- Remerciements reçus 0
il y a 3 ans 2 mois - il y a 3 ans 2 mois #30407
par garrigues
aide pour corriger script AD a été créé par garrigues
Bonjour à vous, j'ai pas mal galéré entre de nombreuses recherches , modifications des CSV, modifications du script mais finalement je suis arrivé a créer un script qui permet une fois que l'AD est installé de créer une UO pricipale (manuellement), et ensuite les UO secondaires,groupes, utilisateurs et ajout des utilistateurs dans leurs groupes automatiques via 3 fichiers CSV.
Cependant il y a quelques petit soucis, je pense que les vrai créateurs de script rigoleront en voyant le miens , mais il est fonctionnel.
Donc ce script fonctionne mais j'ai voulu tester de le relancer pour vérifier si mes test de créations UOs,groupes fonctionnaient je n'ai eu que le message à chaque fois me disant que l'UO, le groupe a bien été créé alors qu'il n'en a pas recréé et qu'il aurait dû me dire qu'ils existaient déjà. je voudrais donc votre avis ou vos suggestions pour corriger ce 1er soucis.
le 2ème soucis que je rencontre et ou je ne trouve pas de solutions via une commande c'est que j'ai 2 utilisateurs avec le même nom de famille dans la même UO mais le script ne m'en créé qu'1, donc je ne sais plus trop quoi faire pour ce problème.
Cependant il y a quelques petit soucis, je pense que les vrai créateurs de script rigoleront en voyant le miens , mais il est fonctionnel.
#Chargement des modules active directory Import-Module ActiveDirectory
#création de l'UO racine:
$Domain = read-Host "non de votre domaine ex: DC=myDomain,DC=com"
$Root_OU = Read-Host "nom de votre OU racine"
if ((Get-ADOrganizationalUnit -filter "name -like'*$($Root_OU)'"))
{ echo "l'organisation $Root_OU est deja presente dans l'AD" }
else { New-ADOrganizationalUnit -Name $Root_OU -Path $Domain -ProtectedFromAccidentalDeletion $false
echo "la creation de l'organisation $Root_OU a fonctionne correctement" }
#Creation des UO:
$OUs=import-csv -path "C:\OU-AP.csv" -delimiter ";"
foreach($ou in $OUs)
{ if ((Get-ADOrganizationalUnit -filter "name -like'*$($ou)'"))
{ write-host "l'organisation $ou est deja presente dans l'AD" }
if ((Get-ADOrganizationalUnit -filter "name -notlike'*$($ou)'"))
{ try
{ New-ADOrganizationalUnit -Name $ou.name -Path $ou.path -ProtectedFromAccidentalDeletion $false }
catch
{ echo "la creation de l'organisation $ou a fonctionne correctement" }
}
}
#Creation des groupes:
$Groups=import-csv -path "C:\groupes.csv" -delimiter ";"
foreach($Group in $Groups)
{ if ((Get-ADGroup -filter "name -like'*$($Group)'"))
{ write-host "le groupe $Group est deja presente dans l'AD" }
if ((Get-ADGroup -filter "name -notlike'*$($ou)'"))
{ try
{ New-ADGroup -GroupScope: "Global" -GroupCategory: "Security" -Name $Group.name -Path $Group.path }
catch
{ echo "la creation du groupe $Goup a fonctionne correctement" }
}
}
#création des utilisateurs
# Importation des utilisateurs depuis le fichier CSV spécifié
$Users=import-csv -path "C:\users-domjacom.csv" -delimiter ";"
# Demande du mot de passe par défaut $password=Read-Host -AsSecureString "Taper le mot de passe par défaut des utilisateurs" -PassThrue -PasswordNeverExpire $true
# Création de l'utilisateur
foreach($user in $Users)
{ $nom= $user.nom
$prenom= $user.prenom
$Oud= $user.path
$sam= $user.SamAccountName
$princ= $user.UserPrincipalName
$new= New-ADUser -Name $nom -GivenName $prenom -SamAccountName $sam -UserPrincipalName $princ -Path $Oud -enabled $true -AccountPassword $password }
#Ajout des utilisateurs dans les groupes primaires et secondaires
#Ajout des utilisateurs aux groupes primaires
$UGs=import-csv -path "C:\users-domjacom.csv" -delimiter ";"
foreach($UG in $UGs) { Add-ADGroupMember -Members $UG.SamAccountName -Identity $UG.groupe }
#Ajout des utilisateurs aux groupes secondaires
$UGs=import-csv -path "C:\users-domjacom.csv" -delimiter ";"
foreach($UG in $UGs) { Add-ADGroupMember -Members $UG.SamAccountName -Identity $UG.groups }
Donc ce script fonctionne mais j'ai voulu tester de le relancer pour vérifier si mes test de créations UOs,groupes fonctionnaient je n'ai eu que le message à chaque fois me disant que l'UO, le groupe a bien été créé alors qu'il n'en a pas recréé et qu'il aurait dû me dire qu'ils existaient déjà. je voudrais donc votre avis ou vos suggestions pour corriger ce 1er soucis.
le 2ème soucis que je rencontre et ou je ne trouve pas de solutions via une commande c'est que j'ai 2 utilisateurs avec le même nom de famille dans la même UO mais le script ne m'en créé qu'1, donc je ne sais plus trop quoi faire pour ce problème.
Dernière édition: il y a 3 ans 2 mois par garrigues.
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
Réduire
Plus d'informations
- Messages : 6302
- Remerciements reçus 68
il y a 3 ans 2 mois #30415
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet aide pour corriger script AD
En l'état ton code est surement fonctionnel mais illisible...
Qq conseils : retour à la ligne et indentation ça aide à lire.
Ensuite le cmdlet Write-Debug aide, tout le monde, beaucoup et trés souvent !
>>je pense que les vrai créateurs de script rigoleront en voyant le miens
Tant que tu ne fais pas pleurer les mainteneurs
Qq conseils : retour à la ligne et indentation ça aide à lire.
Ensuite le cmdlet Write-Debug aide, tout le monde, beaucoup et trés souvent !
>>je pense que les vrai créateurs de script rigoleront en voyant le miens
Tant que tu ne fais pas pleurer les mainteneurs
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- garrigues
- Auteur du sujet
- Hors Ligne
- Membre junior
Réduire
Plus d'informations
- Messages : 26
- Remerciements reçus 0
il y a 3 ans 2 mois #30420
par garrigues
Réponse de garrigues sur le sujet aide pour corriger script AD
Connexion ou Créer un compte pour participer à la conversation.
- garrigues
- Auteur du sujet
- Hors Ligne
- Membre junior
Réduire
Plus d'informations
- Messages : 26
- Remerciements reçus 0
il y a 3 ans 2 mois #30422
par garrigues
Réponse de garrigues sur le sujet aide pour corriger script AD
bon je reviens vers vous car il s'avère que j'ai trouvé une solution, je suis pas sûr que sa soit la bonne manière de faire mais sa a l'air de fonctionner et j'ai bien mes 2 utilisateurs créés dans la même OU
# Importation des utilisateurs depuis le fichier CSV spécifié
$Users=import-csv -path "C:\users-domjacom.csv" -delimiter ";"
# Demande du mot de passe par défaut
$password=Read-Host -AsSecureString "Taper le mot de passe par défaut des utilisateurs" -PassThrue -PasswordNeverExpire $true
# Création de l'utilisateur
foreach($user in $Users)
{
$nom= $user.Name
$prenom= $user.prenom
$Oud= $user.path
$sam= $user.SamAccountName
$princ= $user.UserPrincipalName
$mail= $user.EmailAddress
$sname= $user.nom
$new= New-ADUser -Name $nom -GivenName $prenom -Surname $sname -SamAccountName $sam -UserPrincipalName $princ -emailaddress $mail -Path $Oud -enabled $true -AccountPassword $password
# Importation des utilisateurs depuis le fichier CSV spécifié
$Users=import-csv -path "C:\users-domjacom.csv" -delimiter ";"
# Demande du mot de passe par défaut
$password=Read-Host -AsSecureString "Taper le mot de passe par défaut des utilisateurs" -PassThrue -PasswordNeverExpire $true
# Création de l'utilisateur
foreach($user in $Users)
{
$nom= $user.Name
$prenom= $user.prenom
$Oud= $user.path
$sam= $user.SamAccountName
$princ= $user.UserPrincipalName
$mail= $user.EmailAddress
$sname= $user.nom
$new= New-ADUser -Name $nom -GivenName $prenom -Surname $sname -SamAccountName $sam -UserPrincipalName $princ -emailaddress $mail -Path $Oud -enabled $true -AccountPassword $password
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
Réduire
Plus d'informations
- Messages : 6302
- Remerciements reçus 68
il y a 3 ans 2 mois #30425
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet aide pour corriger script AD
Salut,
>>je suis pas sûr que sa soit la bonne manière
La bonne manière c'est lorsque cela fonctionne, ensuite est-ce maintenable ? C'est une autre question.
Pour être assuré que cela fonctionne, que cela réponde à ton besoin, tu peux créer des tests unitaires avec Pester, mais c'est une autre étape
Une possible amélioration :A noter qu'il existe $user.Name et $user.Nom ...
Si possible utiliser la même langue pour toute la chaîne (je dis ça je dis rien).
>>je suis pas sûr que sa soit la bonne manière
La bonne manière c'est lorsque cela fonctionne, ensuite est-ce maintenable ? C'est une autre question.
Pour être assuré que cela fonctionne, que cela réponde à ton besoin, tu peux créer des tests unitaires avec Pester, mais c'est une autre étape
Une possible amélioration :
#hashtable
$parameters=@{
Name= $user.Name
GivenName= $user.prenom
Surname=$user.nom
Path= $user.path
SamAccountName= $user.SamAccountName
UserPrincipalName= $user.UserPrincipalName
emailaddress = $user.EmailAddress
Enabled= $true
}
#Splatting ( clé de hastable= nom d'un paramètre ; valeur de la clé = valeur du paramètre)
$new= New-ADUser @Parameters -AccountPassword $password
Si possible utiliser la même langue pour toute la chaîne (je dis ça je dis rien).
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
Réduire
Plus d'informations
- Messages : 6302
- Remerciements reçus 68
il y a 3 ans 2 mois #30426
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet aide pour corriger script AD
Un oubli, j'ai lu cecies-tu certains du message en cas d'erreur ?
catch
{ echo "la creation de l'organisation $ou a fonctionne correctement" }
}
...
catch
{ echo "la creation du groupe $Goup a fonctionne correctement" }
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.098 secondes
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Entraide pour les débutants
- aide pour corriger script AD