Question Récupérer avec "trap" l'exception "Accès refusé"

Plus d'informations
il y a 11 mois 2 semaines #33130 par PROUT
      Je n'arrive pas à piéger, avec l'instruction "trap", l'exception "Accès refusé". Est-ce normal? J'aimerais avoir votreavis et bénéficier des conseils de la communauté.    À titre d'essai, je vous transmets deux scripts A et B, l'un avec le parcours d'un répertoire qui provoquera l'exception"Accès refusé" (le répertoire \Users\nom_d_usager convient bien pour tomber sur cette exception, notamment avec les sous-répertoires'C:\Users\usager\AppData\Local\Application Data' ou 'C:\Users\usager\AppData\Local\Temporary Internet Files'), l'autre avec uneboucle de divisions par une variable qui passe par zéro et qui provoquera l'exception classique de diviseur nul. Bien sûr laséquence de trap est identique dans les deux cas.    Avec le piège de l'exception "Accès refusé", mon script A ne rentre jamais dans la séquence de trap. Avec le piège del'exception de diviseur nul, mon script B rentre bien dans la séquence de trap.    Quelqu'un pourrait-il m'apporter un éclairage pertinent?   

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

Plus d'informations
il y a 11 mois 2 semaines - il y a 11 mois 2 semaines #33133 par ageofempiresz
Bonjour PROUT,

Tes scripts, tu les exécutes en tant qu'utilisateur standard ou admin ?

En fonction de l'utilisateur utilisé, l'un te donne accès à ton répertoire personnel uniquement, l'autre à l'ensemble des répertoires personnels des utilisateurs.

Le script Test_trap_B.ps1, le trap fonctionne sur l'erreur d'une division par 0 quand l'indice est égal 0, il essaye de le diviser et là le trap intervient.

Dans ton script Test_trap_A.ps1, j'ai l'impression que le trap n'est pas capable de récupérer une erreur d'accès, par contre avec un try-catch, cela passe sans problème. En essayant d'utiliser la même exception d'erreur du catch avec trap, cela ne fonctionne pas.

C'est un exemple :
Try { 
$folders = Get-ChildItem $Dossier -Recurse -Force -ErrorAction Stop
}
Catch [System.UnauthorizedAccessException]
{ "Access Denied" }
Dernière édition: il y a 11 mois 2 semaines par ageofempiresz.

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

Plus d'informations
il y a 11 mois 1 semaine #33138 par PROUT
    Je viens d'essayer un script similaire nommé "Test_Try_Catch_00.ps1" (parcours d'un répertoire
"C:\Users\usager" qui provoquera l'exception "Accès refusé") mais qui utilise, cette fois, le couple "Try-Catch".
    Je n'arrive toujours pas à piéger cette exception "Accès refusé". J'ai essayé Catch avec le cas
général et avec le cas spécifique "System.UnauthorizedAccessException". Rien n'y fait. Cela ne change rien.
Mon script ne rentre jamais dans le bloc "Catch {}". Aurais-je oublié un élément?
   il va de soi que je travaille sous PowerShell ISE avec les droits d'administrateur..

 
Pièces jointes :

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

Plus d'informations
il y a 11 mois 1 semaine #33139 par ageofempiresz
Je l'ai testé avec un utilisateur standard au niveau de "C:\Users\usager" et là cela fonctionne pour lui-même.
Quand tu es admin avec Powershell ISE ou en console, tu as les droits d'accès à tous les répertoires personnels des utilisateurs, cela veut dire que le catch ne s'applique pas dessus.

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

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