Problème variable script PowerShell

damb37530 Messages postés 12 Statut Membre -  
damb37530 Messages postés 12 Statut Membre -
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

  1. Reivax962 Messages postés 3742 Statut Membre 1 011
     
    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
  2. damb37530 Messages postés 12 Statut Membre
     
    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