Question
Move compte AD et suppression des groupes
- Galadan
- Auteur du sujet
- Hors Ligne
- Membre senior
Réduire
Plus d'informations
- Messages : 75
- Remerciements reçus 0
il y a 4 ans 11 mois #28666
par Galadan
Move compte AD et suppression des groupes a été créé par Galadan
Bonjour,
Je cherche à bouger les utilisateurs désactivés dans une OU spécifique et de supprimer de ces comptes certains groupes AD auxquels ils appartiennent. Le tout avec un petit rapport.
J'ai commencé par ça:
[code:1]#================================= Variables
$CSVfile = 'serveur'
$OUsearch = 'OU=Utilisateurs'
$OUdest = 'OU=Désactivé'
$iM = 0 # Compteur d'utilisateurs supprimés / reset à 0 en début de boucle pour le comptage
$TodayTime = Get-Date -UFormat \"%d-%m-%Y-%HH%m\"
$RapportTxt = 'c:\temp\' + $TodayTime + '_log_purge_AD_Users.txt'
#================================= En tête du rapport à générer
echo \"#==========================================\" >> $RapportTxt
echo \"# Report on \" $TodayTime >> $RapportTxt
echo \"#==========================================\" >> $RapportTxt
echo \"# List of Users desactivated and moved : \" >> $RapportTxt
#================================= Récuperation des comptes désactivés
Import-module ActiveDirectory
$UserToDel = Get-ADUser -filter {(Enabled -eq 'False')} -searchbase $OUsearch | ? { ($_.distinguishedname -notlike '*Désactivé*') } | export-csv $OUsearch -notypeinformation
#================================= Traitement de l'extract en CSV
$CSVImport = Import-Csv $OUsearch -Delimiter \",\"
ForEach ($User in $CSVImport){
$DistinguishedName = $($user.DistinguishedName)
$Name = $($user.Name)
echo $Name >> $RapportTxt
#================================= Supression des groupe de licence
#================================= Déplacement au fil de l'eau
Move-ADObject -identity $DistinguishedName -targetpath $OUdest
$iM++ # incrémente le compteur
}
#================================= Fin du rapport à générer
echo \"#==========================================\" >> $RapportTxt
echo $iM \"User have been desactivate and moved\" >> $RapportTxt
echo \"to OU 'Désactivé' \" >> $RapportTxt
echo \"#==========================================\" >> $RapportTxt
#================================= Envoi par email du rapport
$MailTo = \"\"
$MailCC = \"\"
$MailFrom = \"Utilisateurs désactivés de l'AD\"
$MailSmtp = \"smtp-gateway\"
Send-MailMessage -From $MailFrom -To $MailTo -CC $MailCC -Subject \"AD - Purge des Users\" -Body \"Voir le fichier de log en PJ\" -Attachment $RapportTxt -SmtpServer $MailSmtp
#================================= Supression du rapport
Remove-Item -Path $RapportTxt -force[/code:1]
Il me manque la partie suppression des groupes, sachant qu'il y a plusieurs groupes.
Le code fonctionne après, il est surement perfectible...
Si vous avez des idées je suis preneur!
Merci d'avance.
Message édité par: Arnaud, à: 11/04/19 13:07<br><br>Message édité par: Galadan, à: 23/04/19 08:41
Je cherche à bouger les utilisateurs désactivés dans une OU spécifique et de supprimer de ces comptes certains groupes AD auxquels ils appartiennent. Le tout avec un petit rapport.
J'ai commencé par ça:
[code:1]#================================= Variables
$CSVfile = 'serveur'
$OUsearch = 'OU=Utilisateurs'
$OUdest = 'OU=Désactivé'
$iM = 0 # Compteur d'utilisateurs supprimés / reset à 0 en début de boucle pour le comptage
$TodayTime = Get-Date -UFormat \"%d-%m-%Y-%HH%m\"
$RapportTxt = 'c:\temp\' + $TodayTime + '_log_purge_AD_Users.txt'
#================================= En tête du rapport à générer
echo \"#==========================================\" >> $RapportTxt
echo \"# Report on \" $TodayTime >> $RapportTxt
echo \"#==========================================\" >> $RapportTxt
echo \"# List of Users desactivated and moved : \" >> $RapportTxt
#================================= Récuperation des comptes désactivés
Import-module ActiveDirectory
$UserToDel = Get-ADUser -filter {(Enabled -eq 'False')} -searchbase $OUsearch | ? { ($_.distinguishedname -notlike '*Désactivé*') } | export-csv $OUsearch -notypeinformation
#================================= Traitement de l'extract en CSV
$CSVImport = Import-Csv $OUsearch -Delimiter \",\"
ForEach ($User in $CSVImport){
$DistinguishedName = $($user.DistinguishedName)
$Name = $($user.Name)
echo $Name >> $RapportTxt
#================================= Supression des groupe de licence
#================================= Déplacement au fil de l'eau
Move-ADObject -identity $DistinguishedName -targetpath $OUdest
$iM++ # incrémente le compteur
}
#================================= Fin du rapport à générer
echo \"#==========================================\" >> $RapportTxt
echo $iM \"User have been desactivate and moved\" >> $RapportTxt
echo \"to OU 'Désactivé' \" >> $RapportTxt
echo \"#==========================================\" >> $RapportTxt
#================================= Envoi par email du rapport
$MailTo = \"\"
$MailCC = \"\"
$MailFrom = \"Utilisateurs désactivés de l'AD\"
$MailSmtp = \"smtp-gateway\"
Send-MailMessage -From $MailFrom -To $MailTo -CC $MailCC -Subject \"AD - Purge des Users\" -Body \"Voir le fichier de log en PJ\" -Attachment $RapportTxt -SmtpServer $MailSmtp
#================================= Supression du rapport
Remove-Item -Path $RapportTxt -force[/code:1]
Il me manque la partie suppression des groupes, sachant qu'il y a plusieurs groupes.
Le code fonctionne après, il est surement perfectible...
Si vous avez des idées je suis preneur!
Merci d'avance.
Message édité par: Arnaud, à: 11/04/19 13:07<br><br>Message édité par: Galadan, à: 23/04/19 08:41
Connexion ou Créer un compte pour participer à la conversation.
- Sinjk
- Hors Ligne
- Membre premium
Réduire
Plus d'informations
- Messages : 99
- Remerciements reçus 0
il y a 4 ans 11 mois #28671
par Sinjk
Réponse de Sinjk sur le sujet Re:Move compte AD et suppression des groupes
Hello,
Comment determines-tu les groupes à supprimer ?
Comment determines-tu les groupes à supprimer ?
Connexion ou Créer un compte pour participer à la conversation.
- Galadan
- Auteur du sujet
- Hors Ligne
- Membre senior
Réduire
Plus d'informations
- Messages : 75
- Remerciements reçus 0
il y a 4 ans 11 mois #28680
par Galadan
Réponse de Galadan sur le sujet Re:Move compte AD et suppression des groupes
Bonjour, justement je ne sais pas trop.
J'aimerais éviter l'utilisation d'un fichier externe.
Sachant que les groupes en questions commencent de la même façon.
Peut-on éviter également l'utilisation d'un fichier comme au début du script?
J'aimerais éviter l'utilisation d'un fichier externe.
Sachant que les groupes en questions commencent de la même façon.
Peut-on éviter également l'utilisation d'un fichier comme au début du script?
Connexion ou Créer un compte pour participer à la conversation.
- Sinjk
- Hors Ligne
- Membre premium
Réduire
Plus d'informations
- Messages : 99
- Remerciements reçus 0
il y a 4 ans 11 mois #28683
par Sinjk
Réponse de Sinjk sur le sujet Re:Move compte AD et suppression des groupes
Si tu veux éviter l'utilisation d'un fichier externe tu dois faire ton filtrage directement depuis ta variable $UserToDel
[code:1]
$OUsearch = 'OU=Utilisateurs'
$UserToDel = Get-ADUser -filter {(Enabled -eq 'False')} -searchbase $OUSearch -Properties * | ? { ($_.distinguishedname -notlike '*Désactivé*') }
foreach($user in $UserToDel){
$DistinguishedName = $user.DistinguishedName
$Name = $user.Name
$Groups= $user.memberof
Move-ADObject -identity $DistinguishedName -targetpath $OUdest
$iM++ # incrémente le compteur
}
[/code:1]
La variable $Groups va te permettre de voir les groupes auxquels les users appartiennent, à toi de définir lesquels sont à supprimer !
[code:1]
$OUsearch = 'OU=Utilisateurs'
$UserToDel = Get-ADUser -filter {(Enabled -eq 'False')} -searchbase $OUSearch -Properties * | ? { ($_.distinguishedname -notlike '*Désactivé*') }
foreach($user in $UserToDel){
$DistinguishedName = $user.DistinguishedName
$Name = $user.Name
$Groups= $user.memberof
Move-ADObject -identity $DistinguishedName -targetpath $OUdest
$iM++ # incrémente le compteur
}
[/code:1]
La variable $Groups va te permettre de voir les groupes auxquels les users appartiennent, à toi de définir lesquels sont à supprimer !
Connexion ou Créer un compte pour participer à la conversation.
- Galadan
- Auteur du sujet
- Hors Ligne
- Membre senior
Réduire
Plus d'informations
- Messages : 75
- Remerciements reçus 0
il y a 4 ans 11 mois #28684
par Galadan
Réponse de Galadan sur le sujet Re:Move compte AD et suppression des groupes
Comme cela:
[code:1]$UserToDel = Get-ADUser -filter {(Enabled -eq 'False')} -searchbase $OUSearch -Properties * | ? { ($_.distinguishedname -notlike '*Désactivé*') }
foreach($user in $UserToDel){
$DistinguishedName = $user.DistinguishedName
$Name = $user.Name
$Groups= $user.memberof
Move-ADObject -identity $DistinguishedName -targetpath $OUdest
Remove-ADGroupMember -Identity $DistinguishedName -Member $groups -Confirm:$false
$iM++ # incrémente le compteur
}[/code:1]
Avec:
[code:1]$groups = 'GRP_LIC_*','GDL_*'[/code:1]<br><br>Message édité par: Galadan, à: 8/04/19 10:27
[code:1]$UserToDel = Get-ADUser -filter {(Enabled -eq 'False')} -searchbase $OUSearch -Properties * | ? { ($_.distinguishedname -notlike '*Désactivé*') }
foreach($user in $UserToDel){
$DistinguishedName = $user.DistinguishedName
$Name = $user.Name
$Groups= $user.memberof
Move-ADObject -identity $DistinguishedName -targetpath $OUdest
Remove-ADGroupMember -Identity $DistinguishedName -Member $groups -Confirm:$false
$iM++ # incrémente le compteur
}[/code:1]
Avec:
[code:1]$groups = 'GRP_LIC_*','GDL_*'[/code:1]<br><br>Message édité par: Galadan, à: 8/04/19 10:27
Connexion ou Créer un compte pour participer à la conversation.
- Sinjk
- Hors Ligne
- Membre premium
Réduire
Plus d'informations
- Messages : 99
- Remerciements reçus 0
il y a 4 ans 11 mois #28685
par Sinjk
Réponse de Sinjk sur le sujet Re:Move compte AD et suppression des groupes
Bonjour,
Attention tu confonds les paramètres Identity et Members
[code:1]
$groups = 'GRP_LIC_*','GDL_*'
Remove-ADGroupMember -Identity $groups -Member $DistinguishedName -Confirm:$false
[/code:1]
Dans ce cas où tu connais directement les groupes je pense que tu n'as plus besoin du $user.memberof
Essaye déjà comme ça et tu verras.
Bon courage
Attention tu confonds les paramètres Identity et Members
[code:1]
$groups = 'GRP_LIC_*','GDL_*'
Remove-ADGroupMember -Identity $groups -Member $DistinguishedName -Confirm:$false
[/code:1]
Dans ce cas où tu connais directement les groupes je pense que tu n'as plus besoin du $user.memberof
Essaye déjà comme ça et tu verras.
Bon courage
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.086 secondes
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Entraide pour les débutants
- Move compte AD et suppression des groupes