Question
Script suppression utilisateur AD
- morgan
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
- Messages : 8
- Remerciements reçus 0
Après plusieurs essais (pas très fructueux), je viens demander de l'aide.
Le but de ce script est de supprimer tous les comptes stagiaires qui ne sont pas connectés depuis un an et dont leur nom contient \"Stagiaire\".
J'ai, en soi, réussi à faire quelque chose de correct mais, le soucis est que je voudrais que quand on me demande la confirmation de suppression d'un compte et que je réponds non, cela change d'utilisateur.
Exemple :
Hors, là, avec cette version du script, ça me remet le premier utilisateurL'utilisateur stagiaire.toto va etre supprimé
Confirmer
Êtes-vous sûr de vouloir effectuer cette action ?
Opération « Remove » en cours sur la cible « CN = ,OU = , DC=toto, DC=local ».
[O] Oui [T] Oui pour tout [N] Non Non pour toutSuspendre
[?] Aide(la valeur par défaut est « O ») : N
L'utilisateur stagiaire.toto2 va etre supprimé
Confirmer
Êtes-vous sûr de vouloir effectuer cette action ?
Opération « Remove » en cours sur la cible « CN = ,OU = , DC=toto, DC=local ».
[O] Oui [T] Oui pour tout [N] Non Non pour toutSuspendre
[?] Aide(la valeur par défaut est « O ») : O
Voici le script en question :
[code:1]Import-Module activedirectory
#Script qui supprime des utilisateurs de l'AD
clear-host
#On affiche les utilisateurs que l'on veut supprimer
$365_j = (Get-Date).adddays(-365)
Get-ADUser -filter {(lastlogontimestamp -le $365_j -and SamAccountName -like \"*stagiaire*\"«»)} -SearchBase \"DC=toto,DC=local\" -Properties MemberOf, AccountExpirationdate| Select name, lastlogontimestamp, SamAccountName, AccountExpirationdate
Get-ADUser -filter {(lastlogontimestamp -le $365_j -and SamAccountName -like \"*stagiaire*\"«»)} -SearchBase \"DC=toto,DC=local\" -Properties MemberOf, AccountExpirationdate| Select name, lastlogontimestamp, SamAccountName, AccountExpirationdate | export-csv -path C:\users.csv
#Va chercher un utilisateur dans le csv
$importcsv = Import-Csv -Path \"C:\users.csv\"
ForEach ($user in $importcsv)
{
$nomuser = $user.SamAccountName
}
#Ajoute l'utilisateur dans la variable
$chercheuser = get-aduser -filter \"SamAccountName -like '$nomuser'\" -SearchBase \"DC=toto,DC=local\" -properties memberof
#Supprime l'utilisateur des groupes
$Groups = $chercheuser.memberof
$Groups | Foreach-Object{Get-ADGroup $_ | Remove-ADGroupMember -Member $chercheuser -Confirm:$false}
read-host \"Pressez une touche pour continuer\"
#Suppression du compte
$rep = \"o\"
while ($rep -eq \"o\"«»)
{
#Si l\"utilisateur existe, le supprimer
if(($chercheuser) -and ($rep -eq \"o\"«»))
{
\"L'utilisateur $nomuser va etre supprime\"
$resultat = \"l'utilisateur $nomuser vient d'etre supprime\"
Remove-aduser $nomuser
$resultat | Out-File c:\test.txt
}
#si l'utilisateur n'existe pas
else
{
\"L'utilisateur $nomuser ne va pas etre supprime\"
}
}
[/code:1]
Dans l'attente d'une aide précieuse.
Connexion ou Créer un compte pour participer à la conversation.
- Philippe
- Hors Ligne
- Modérateur
-
- Messages : 1778
- Remerciements reçus 21
tu peut me dire a quel endroit tu a prévue de changer d'utilisateur dans ton script ?que quand je réponds non, cela change d'utilisateur.
ou plus précisément comment tu pense que tu change d'utilisateur dans ton script ?
petite info en passant :
inutile d'enlevé un utilisateur des groupes dont il est membres, ça se fais automatiquement dans l'AD !
[code:1]
#Supprime l'utilisateur des groupes
$Groups = $chercheuser.memberof
$Groups | Foreach-Object {
Get-ADGroup $_ | Remove-ADGroupMember -Member $chercheuser -Confirm:$false
}[/code:1]A supprimer<br><br>Message édité par: 6ratgus, à: 21/06/17 14:24
Connexion ou Créer un compte pour participer à la conversation.
- morgan
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
- Messages : 8
- Remerciements reçus 0
Je me suis sûrement mal exprimé et j'en suis désolé.
Et merci pour l'info.
Connexion ou Créer un compte pour participer à la conversation.
- Philippe
- Hors Ligne
- Modérateur
-
- Messages : 1778
- Remerciements reçus 21
ou j'ai mal comprisJe me suis sûrement mal exprimé et j'en suis désolé.
dans le \"if/else\" tu ne fais qu'un action \"efface ou je n'efface pas\"Et bien je pensais pouvoir le faire dans le \"else\", si je ne réponds pas \"o\", le script relance une demande de suppression avec un autre utilisateur.
pour moi ton script s'execute qu'une seule fois. Je veux dire qu'il ne boucle pas sur les utilisateurs.
pourtant tu a tous préparé pour ça !!!
[code:1]ForEach ($user in $importcsv) {
$nomuser = $user.SamAccountName
}[/code:1]
mais tu referme ta boucle aussitôt
déplace l'accolade fermente en fin du script et tous ira mieux !!
Connexion ou Créer un compte pour participer à la conversation.
- morgan
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
- Messages : 8
- Remerciements reçus 0
Connexion ou Créer un compte pour participer à la conversation.
- Philippe
- Hors Ligne
- Modérateur
-
- Messages : 1778
- Remerciements reçus 21
évidemment tu boucle sur le même nom et tu sort plus du script !!
il faut supprimer ça :
[code:1]$rep = \"o\"
while ($rep -eq \"o\"«»)
{ [/code:1]
et répondre \"o\" a ta \"question\" : Pressez une touche pour continuer
il faut aussi que tu rajoute un write-host \"utilisateur : $($user.name)\" avant pour connaitre le nom de utilisateur que tu efface
.
Connexion ou Créer un compte pour participer à la conversation.
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Script suppression utilisateur AD