Question
[Résolu] Redirection des messages d'erreurs
- Fabien
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 22
- Remerciements reçus 0
il y a 10 ans 11 mois #19391
par Fabien
[Résolu] Redirection des messages d'erreurs a été créé par Fabien
Bonjour,
Dans l'exemple suivant je redirige les messages d'erreurs dans un fichier texte:
[code:1]
if (Test-Path \"$Users\$ProfilName\Documents\"«»){
Copy-Item -Path \"$Users\$ProfilName\Documents\" -Destination \"$Disk`:\$NomPc\SVG\Profils\$ProfilName\Mes Documents\\" -Recurse -Force 2>>\"$Disk`:\$NomPc\Erreurs.txt\"
[/code:1]
Cela fonctionne très bien sauf que j'ai le détail du message d'erreur et j'aimerai avoir que le message de base (la 1ère ligne) sans les détails du script.
j'ai essayé avec \" $error >>\"$Disk`:\$NomPc\Erreurs.txt\" \"
ou: \" $error.Exception.message >>\"$Disk`:\$NomPc\Erreurs.txt\"
mais ça ne marche pas.
Merci de votre aide.<br><br>Message édité par: Arnaud, à: 8/04/15 09:25
Dans l'exemple suivant je redirige les messages d'erreurs dans un fichier texte:
[code:1]
if (Test-Path \"$Users\$ProfilName\Documents\"«»){
Copy-Item -Path \"$Users\$ProfilName\Documents\" -Destination \"$Disk`:\$NomPc\SVG\Profils\$ProfilName\Mes Documents\\" -Recurse -Force 2>>\"$Disk`:\$NomPc\Erreurs.txt\"
[/code:1]
Cela fonctionne très bien sauf que j'ai le détail du message d'erreur et j'aimerai avoir que le message de base (la 1ère ligne) sans les détails du script.
j'ai essayé avec \" $error >>\"$Disk`:\$NomPc\Erreurs.txt\" \"
ou: \" $error.Exception.message >>\"$Disk`:\$NomPc\Erreurs.txt\"
mais ça ne marche pas.
Merci de votre aide.<br><br>Message édité par: Arnaud, à: 8/04/15 09:25
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 10 ans 11 mois #19392
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Redirection des messages d'erreurs
Salut,
tu peux utiliser $ErrorView : help ErrorView
tu peux utiliser $ErrorView : help ErrorView
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Fabien
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 22
- Remerciements reçus 0
il y a 10 ans 11 mois #19419
par Fabien
Réponse de Fabien sur le sujet Re:Redirection des messages d'erreurs
Merci,
Le résultat est plus succin serte, mais pas très clair.
Par exemple, pour une copie du dossier \"Mes documents\" lorqu'il rencontre les \"reparspoint\" il me retourne l'erreur suivante:
avec $ErrorView= \"CategoryView\"
[code:1]PermissionDenied: (Ma musique:«»DirectoryInfo) [Copy-Item], UnauthorizedAccessException[/code:1]
avec $ErrorView= \"Normalview\"
[code:1]Copy-Item : L'accès au chemin d'accès 'C:\Users\Fabien\Documents\Ma musique' est
refusé.
Au caractère F:\SCRIPTS\Powershell\BackUp-Ps\Test1.ps1:423 : 4
+ Copy-Item -Path \"$Users\$ProfilName\Documents\" -Destination \"$Disk`:\$NomPc\S ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : PermissionDenied: (Ma musique:«»DirectoryInfo) [Copy-Item
], UnauthorizedAccessException
+ FullyQualifiedErrorId : CopyDirectoryInfoItemUnauthorizedAccessError,Microsoft.
PowerShell.Commands.CopyItemCommand[/code:1]
Or moi j'aimerai juste:
[code:1]Copy-Item : L'accès au chemin d'accès 'C:\Users\Fabien\Documents\Ma musique' est
refusé.[/code:1]
Est-ce possible?
Le résultat est plus succin serte, mais pas très clair.
Par exemple, pour une copie du dossier \"Mes documents\" lorqu'il rencontre les \"reparspoint\" il me retourne l'erreur suivante:
avec $ErrorView= \"CategoryView\"
[code:1]PermissionDenied: (Ma musique:«»DirectoryInfo) [Copy-Item], UnauthorizedAccessException[/code:1]
avec $ErrorView= \"Normalview\"
[code:1]Copy-Item : L'accès au chemin d'accès 'C:\Users\Fabien\Documents\Ma musique' est
refusé.
Au caractère F:\SCRIPTS\Powershell\BackUp-Ps\Test1.ps1:423 : 4
+ Copy-Item -Path \"$Users\$ProfilName\Documents\" -Destination \"$Disk`:\$NomPc\S ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : PermissionDenied: (Ma musique:«»DirectoryInfo) [Copy-Item
], UnauthorizedAccessException
+ FullyQualifiedErrorId : CopyDirectoryInfoItemUnauthorizedAccessError,Microsoft.
PowerShell.Commands.CopyItemCommand[/code:1]
Or moi j'aimerai juste:
[code:1]Copy-Item : L'accès au chemin d'accès 'C:\Users\Fabien\Documents\Ma musique' est
refusé.[/code:1]
Est-ce possible?
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 10 ans 11 mois #19421
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Redirection des messages d'erreurs
Bylliboy écrit:
Tu peux remplacer par des try/catch et reconstruire le message d'erreur ou encore utiliser un autre mécanisme de log. Tu peux également laisser en l'état et retravailler ton fichier de log afin d'en extraire que les lignes qui t'intéressent, une sorte de Convert-ErrorLog.
Avec ton approche je ne pense pas, c'est le mécanisme de redirection qu'il faudrait intercepter, comme ici .Est-ce possible?
Tu peux remplacer par des try/catch et reconstruire le message d'erreur ou encore utiliser un autre mécanisme de log. Tu peux également laisser en l'état et retravailler ton fichier de log afin d'en extraire que les lignes qui t'intéressent, une sorte de Convert-ErrorLog.
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Fabien
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 22
- Remerciements reçus 0
il y a 10 ans 11 mois #19422
par Fabien
Réponse de Fabien sur le sujet Re:Redirection des messages d'erreurs
Oui j'avais déjà pensé au \"try/catch\" mais j'essayais de trouver une solution plus simpliste mais je pense que cette solution s'impose.
merci de tes réponses Laurent.
merci de tes réponses Laurent.
Connexion ou Créer un compte pour participer à la conversation.
- Arnaud Petitjean
-
- Hors Ligne
- Modérateur
-
il y a 10 ans 11 mois #19427
par Arnaud Petitjean
MVP PowerShell et créateur de ce magnifique forum
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?
Réponse de Arnaud Petitjean sur le sujet Re:Redirection des messages d'erreurs
Hello Bylliboy,
Dans tous les cas de figure, si tu veux faire mieux, en termes de rendu des messages d'erreur, qu'avec l'opérateur de redirection >> il va falloir fournir un petit effort supplémentaire...
Je te propose au lieu d'utiliser \"try/catch\", d'utiliser le paramètre commun -ErrorVariable qui est présent sur toutes les commandelettes afin de stocker l'erreur potentielle dans une variable. Ensuite il n'y a plus qu'à extraire certaines données de la variable et le tour est joué.
Essaie ceci, par exemple :
[code:1]
PS > gci C:\windows\AppCompat\Appraiser\Telemetry\Baseline -ErrorVariable err
Get-ChildItem : L'accès au chemin d'accès 'C:\windows\AppCompat\Appraiser\Telemetry\Baseline' est refusé.
Au niveau de ligne : 1 Caractère : 4
+ gci <<<< C:\windows\AppCompat\Appraiser\Telemetry\Baseline -ErrorVariable err
+ CategoryInfo : PermissionDenied: (C:\windows\AppC...emetry\Baseline:«»String) [Get-ChildItem], UnauthorizedAccessException
+ FullyQualifiedErrorId : DirUnauthorizedAccessError,Microsoft.PowerShell.Commands.GetChildItemCommand
PS > $err[0].exception.message
L'accès au chemin d'accès 'C:\windows\AppCompat\Appraiser\Telemetry\Baseline' est refusé.
[/code:1]
Autrement dit, après chaque commande il te faudra tester si la variable $err contient de la donnée, et si c'est le cas, logger ton message d'erreur.
Arnaud<br><br>Message édité par: Arnaud, à: 7/04/15 11:41
Dans tous les cas de figure, si tu veux faire mieux, en termes de rendu des messages d'erreur, qu'avec l'opérateur de redirection >> il va falloir fournir un petit effort supplémentaire...
Je te propose au lieu d'utiliser \"try/catch\", d'utiliser le paramètre commun -ErrorVariable qui est présent sur toutes les commandelettes afin de stocker l'erreur potentielle dans une variable. Ensuite il n'y a plus qu'à extraire certaines données de la variable et le tour est joué.
Essaie ceci, par exemple :
[code:1]
PS > gci C:\windows\AppCompat\Appraiser\Telemetry\Baseline -ErrorVariable err
Get-ChildItem : L'accès au chemin d'accès 'C:\windows\AppCompat\Appraiser\Telemetry\Baseline' est refusé.
Au niveau de ligne : 1 Caractère : 4
+ gci <<<< C:\windows\AppCompat\Appraiser\Telemetry\Baseline -ErrorVariable err
+ CategoryInfo : PermissionDenied: (C:\windows\AppC...emetry\Baseline:«»String) [Get-ChildItem], UnauthorizedAccessException
+ FullyQualifiedErrorId : DirUnauthorizedAccessError,Microsoft.PowerShell.Commands.GetChildItemCommand
PS > $err[0].exception.message
L'accès au chemin d'accès 'C:\windows\AppCompat\Appraiser\Telemetry\Baseline' est refusé.
[/code:1]
Autrement dit, après chaque commande il te faudra tester si la variable $err contient de la donnée, et si c'est le cas, logger ton message d'erreur.
Arnaud<br><br>Message édité par: Arnaud, à: 7/04/15 11:41
MVP PowerShell et créateur de ce magnifique forum
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.050 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- [Résolu] Redirection des messages d'erreurs