Question Script suppression utilisateur AD

Plus d'informations
il y a 8 ans 9 mois #23772 par morgan
Bonjour,

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 :

L'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 tout Suspendre
[?] 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 tout Suspendre
[?] Aide(la valeur par défaut est « O ») : O

Hors, là, avec cette version du script, ça me remet le premier utilisateur :angry:.


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.

Plus d'informations
il y a 8 ans 9 mois #23776 par Philippe
salut BlackAbba

que quand je réponds non, cela change d'utilisateur.

tu peut me dire a quel endroit tu a prévue de changer d'utilisateur dans ton script ?
ou plus précisément comment tu pense que tu change d'utilisateur dans ton script ? :blink:

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.

Plus d'informations
il y a 8 ans 9 mois #23777 par morgan
Réponse de morgan sur le sujet Re:Script suppression utilisateur AD
Et bien je pensais pouvoir le faire dans le \&quot;else\&quot;, si je ne réponds pas \&quot;o\&quot;, le script relance une demande de suppression avec un autre utilisateur.

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.

Plus d'informations
il y a 8 ans 9 mois #23778 par Philippe

Je me suis sûrement mal exprimé et j'en suis désolé.

ou j'ai mal compris ;)

Et bien je pensais pouvoir le faire dans le \&quot;else\&quot;, si je ne réponds pas \&quot;o\&quot;, le script relance une demande de suppression avec un autre utilisateur.

dans le \&quot;if/else\&quot; tu ne fais qu'un action \&quot;efface ou je n'efface pas\&quot;
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 !!! B)
[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 !! B)

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 8 ans 9 mois #23779 par morgan
Réponse de morgan sur le sujet Re:Script suppression utilisateur AD
Et bien, j'ai testé ta solution et ça ne fonctionne toujours pas. Au moment de la confirmation quand je réponds \&quot;non\&quot;, il me sélectionne toujours le même utilisateur. :( :(

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 8 ans 9 mois #23780 par Philippe
désoler j'avais pas réalisé que tu n'avais pas mis le while pour un test
évidemment tu boucle sur le même nom et tu sort plus du script !! :evil:

il faut supprimer ça :
[code:1]$rep = \&quot;o\&quot;

while ($rep -eq \&quot;o\&quot;«»)

{ [/code:1]

et répondre \&quot;o\&quot; a ta \&quot;question\&quot; : Pressez une touche pour continuer

il faut aussi que tu rajoute un write-host \&quot;utilisateur : $($user.name)\&quot; avant pour connaitre le nom de utilisateur que tu efface
.

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.053 secondes
Propulsé par Kunena