Problème variable script PowerShell

Fermé
damb37530 Messages postés 11 Date d'inscription lundi 21 juin 2010 Statut Membre Dernière intervention 20 septembre 2018 - 20 sept. 2018 à 13:08
damb37530 Messages postés 11 Date d'inscription lundi 21 juin 2010 Statut Membre Dernière intervention 20 septembre 2018 - 20 sept. 2018 à 14:29
Bonjour,

J'ai créé un script pour supprimer les reps de profil itinérant et de Documents pour les utilisateurs partis de l'entreprise.
Mon problème est que lorsque je lance mon script pour la 1ère fois, il ne reconnait pas la saisie que je rentre à la main pour donner le nom d'utilisateur à supprimer (comme si il ne prennait pas en compte ce que je viens de rentrer).
Par contre quand je le lance une 2ème fois (via une boucle) ça me prend bien ma saisie. Ainsi de suite, le 3ème coup il reprend la saisie du 2ème coup et il faut que je reboucle pour que ça prenne la bonne saisie.
Je pense que j'ai un pb au niveau de la déclaration des variables ou une ligne en erreur.
Je suis désolé mais je ne sais pas trop comment expliqué au mieux...

Je peux vous donner le script si besoin (je n'ai pas réussi à l'intégrer à ma demande)

Merci

2 réponses

Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
20 sept. 2018 à 13:41
Bonjour,

Oui, on aurait besoin du script.
Pour l'intégrer au message, ouvre une balise
<code>
, colle ton texte dedans et referme la balise. Ou utilise le bouton
<>
juste au dessus de la zone de texte.

Xavier
1
damb37530 Messages postés 11 Date d'inscription lundi 21 juin 2010 Statut Membre Dernière intervention 20 septembre 2018
20 sept. 2018 à 14:29
Très bien je savais pas comment l'intégrer...

Du coup j'ai le pb quand je rentre le NNI après le step "$SaisieNNI = Read-Host " veuillez saisir le NNI""

J'entre le NNI et il a toujours en mémoire celui du coup d'avant (ou rien si c'est le 1er lancement).


# Importation des modules
Import-Module activedirectory

# ##########################
# Déclaration des variables
# ##########################

#Composition variable chemin profil V2
$Ch_UserV2 = $SaisieNNI+".V2"
#Composition variable chemin profil V6
$Ch_UserV6 = $SaisieNNI+".V6"
#definir le chemin des documents de l'utilisateur
$Chemin_DOC = "M:\IN\LAS-37CHAUVIN405\"+"$SaisieNNI"
#definir le chemin du profil (.v2)
$Chemin_ProtifItinV2 = "M:\UT\LAS-37CHAUVIN405\"+"$Ch_UserV2"
#definir le chemin du profil (.v6)
$Chemin_ProtifItinV6 = "M:\UT\LAS-37CHAUVIN405\"+"$Ch_UserV6"


#--------------------------------------------------Fonction Recherche_User----------------------------------------------------------------------------------------------
Function Recherche_User
{
param([string]$NNIdescription)

# Début de boucle "While" pour rechercher un Utilisateur valide si
# une erreur a été réalisé en tapant le NNI

# On demande a l'utilisateur du script de taper le matricule de l'utilisateur à traiter
$NNI_User=("*"+$NNIdescription+"*")
# Recherche de l'utilisateur par le matricule dans la description donne ci-dessus
$Cherche_User=Get-ADUser -Filter {Lastname -like $NNI_User}

$Cherche_User=Get-ADUser -Filter {Surname -like $NNI_User}


# Si le matricule n'est pas présent dans la description,
# on le recherche dans la propriété "Office"
IF ($Cherche_User -eq $null)
{
# Recherche de l'utilisateur par le matricule dans le bureau donne ci-dessus
$Cherche_User=Get-ADUser -Filter {Name -like $NNI_User}
Write-Host "Name"

}


ELSE
{
$Rep_Recherche = "n"
}

# On retourne l'utilisateur trouvé avec le matricule

return $Cherche_User
}

#-------------------------------------- Fonction suppression profilV2--------------------------------------------------
function ProfilItinerantV2
{
param([string]$Profil)
# Verification si l'utilisateur a un profil itinérant
# Si l'utilisateur a un profil sur le réseau, on le supprime
IF (Test-Path $Chemin_ProtifItinV2)
{

# Attribution des droits sur le profil
C:\windows\system32\SetACL.exe -on $Chemin_ProtifItinV2 -ot file -actn setowner -ownr "n:Administrator" -rec cont_obj
C:\windows\system32\SetACL.exe -on $Chemin_ProtifItinV2 -ot file -actn ace -ace "n:Administrator;p:full;i:so,sc;m:set;w:dacl"
C:\windows\system32\SetACL.exe -on $Chemin_ProtifItinV2 -ot file -actn setowner -ownr "n:Administrator" -rec cont_obj


# Suppression du repertoire
Write-Host "Suppression du répertoire"
Remove-Item -Path $Chemin_ProtifItinV2 -Confirm:$true -Recurse -Force
# Suppression du compte AD
$Profil = Get-ADUser -Filter {Lastname -like $SaisieNNI}

}

ELSE
{
Write-Host "Le dossier .V2 dans "+ $Chemin_ProtifItinV2 + " n'a pas été supprimé"
sleep 3
}
}


#-------------------------------------- Fonction suppression profilV6--------------------------------------------------
function ProfilItinerantV6
{
param([string]$Profil)
# Verification si l'utilisateur a un profil itinérant
# Si l'utilisateur a un profil sur le réseau, on le supprime
IF (Test-Path $Chemin_ProtifItinV6)
{

# Attribution des droits sur le profil
C:\windows\system32\SetACL.exe -on $Chemin_ProtifItinV6 -ot file -actn setowner -ownr "n:Administrator" -rec cont_obj
C:\windows\system32\SetACL.exe -on $Chemin_ProtifItinV6 -ot file -actn ace -ace "n:Administrator;p:full;i:so,sc;m:set;w:dacl"
C:\windows\system32\SetACL.exe -on $Chemin_ProtifItinV6 -ot file -actn setowner -ownr "n:Administrator" -rec cont_obj


# Suppression du repertoire
Write-Host "Suppression du répertoire"
Remove-Item -Path $Chemin_ProtifItinV6 -Confirm:$true -Recurse -Force
# Suppression du compte AD
$Profil = Get-ADUser -Filter {Lastname -like $SaisieNNI}

}

ELSE
{
Write-Host "Le dossier .V6 dans "+ $Chemin_ProtifItinV6 + " n'a pas été supprimé"
sleep 3
}
}


#------------------------------------ Fonction suppression DOC--------------------------------------------------------

function DocumentUtilisateur
{
#param([string]$Documents)
# Verification si l'utilisateur a des documents sur le réseau
# Si l'utilisateur a un profil sur le réseau, on le supprime
IF (Test-Path $Chemin_DOC)
{
# Suppression du repertoire

Remove-Item -Path $Chemin_DOC -Confirm:$true -Recurse -Force
Write-Host "Confirmation de la supppression des documents"
}
ELSE
{
Write-Host "Les documents ne sont pas supprimés"
sleep 3
}

}




#----------------------------------------------Fonction suppression Compte AD---------------------------------------------------------------------------------------------------


Function Compte_AD
{
Remove-ADUser -Identity $SaisieNNI -Confirm:$true

}









############################################################################################
# Début du script #
############################################################################################

Write-Host "#########################################"
Write-Host "Vous venez de lancer le script qui permet"
Write-Host "de supprimer des comptes EDF"
Write-Host "#########################################"
Write-Host

# Début de boucle au cas ou il y aurait plusieurs matricule
$Rep="y"

# Début de boucle au cas ou il y aurait plusieurs matricule
#
while ($Rep -eq "y")
{
#on stocke la saisie
$SaisieNNI = Read-Host " veuillez saisir le NNI"
#Pour la recherche de l'utilisateur
$UserSaisie = Recherche_User -NNIdescription $SaisieNNI
Write-Host $Chemin_ProtifItinV2
Write-Host $Chemin_ProtifItinV6
Write-Host $Chemin_DOC
IF ($UserSaisie -ne $null)
{
# Bandeau pour indiquer a l'utilisateur du script ce qu'il faut faire
# Entrer un numéro pour enregistrer un type d'arrêt

Write-Host "Recherche de l'utilisateur dans l'AD"
sleep 2
Write-Host "L'utilisateur se situe dans : "+$UserSaisie
sleep 2
DocumentUtilisateur -Nom_User $UserSaisie
ProfilItinerantV2 -Nom_User $UserSaisie
ProfilItinerantV6 -Nom_User $UserSaisie
Compte_AD -Nom_User $UserSaisie
Write-Host "Fin des processus de suppression"
Write-Host "-----------------------------------------"


}
ELSE
{
Write-Host " Aucun utilisateur n'a été trouvé, Erreur de saisi ou utilisateur non présent dans l'AD"
}


$Rep = (Read-Host "Avez-vous d'autre(s) NNI à traiter (y/n) ?").tolower()
while ($Rep-ne "y" -and $Rep -ne "n")
{

$Rep=(Read-Host -Prompt " IL FALLAIT APPUYER SUR Y OU N . Avez-vous d'autre(s) matricule(s) à traiter (y/n) ?").tolower()
}
CLS
}



Merci
0