IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Scripts/Batch Discussion :

Powershell - Help me sur les trap


Sujet :

Scripts/Batch

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 5
    Par défaut Powershell - Help me sur les trap
    Bonjour à tous,

    Je travaille sur un script en powershell pour migrer des BALs Notes vers un serveur Exchange. L'outil microsoft transporter Suite permet de faire cette migration. On peut utiliser l'outil via powershell avec un tas de cmdlets.
    Juste avant l'execution d'une de ces commandes, j'ai mis un trap pour récuperer l'exception, et la rien ne se passe. J'ai essayé en mettant une division par Zero et mon trap fonctionne.
    J'ai essayer de faire un gettype de l'erreur que me sortait ma cmdlet transporter suite et j'obtiens :
    TypeName : Microsoft.Exchange.Transporter.TransporterException

    Ensuite je dois avouer que mes connaissances sont trop limités.
    Je pensais que le trap pouvait récuperer toutes les exceptions, apparemment non !
    J'ai lu aussi qu'il fallait que le trap handler soit defini
    Pour résumer, j'ai besoin d'aide sur ces traps.
    Merci d'avance.

  2. #2
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Billets dans le blog
    1
    Par défaut
    Salut,
    Citation Envoyé par arthdji
    Juste avant l'execution d'une de ces commandes, j'ai mis un trap pour récuperer l'exception, et la rien ne se passe.
    La portée de l'instruction trap est le bloc courant : {}
    Citation Envoyé par arthdji
    Ensuite je dois avouer que mes connaissances sont trop limités.
    Son principe rejoint celui de dot NET.
    Citation Envoyé par arthdji
    Je pensais que le trap pouvait récuperer toutes les exceptions, apparemment non !
    trap sans préciser traite toutes les exceptions, trap [Microsoft.Exchange.Transporter.TransporterException] traite uniquement celle précisée.
    Citation Envoyé par arthdji
    J'ai lu aussi qu'il fallait que le trap handler soit defini
    C'est juste le nom de la construction je pense :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    trap {
     traitement
    }
    Le mieux serait de fournir le code qui te pose pb.

    Sinon un très bon tutoriel sur le sujet :
    http://huddledmasses.org/trap-exception-in-powershell/
    voir aussi : http://blogs.msdn.com/powershell/arc...25/583234.aspx

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 5
    Par défaut
    Bonjour,

    Merci Laurent pour ta réponse.
    Donc si je comprends bien il n'y a pas de raison pour que ça ne marche pas.
    Voici une partie du code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    Function f_Mig_BAL($dominouserCN, $UsermailServer, $globalcatalog, $TargetClientAccessServer, $TargetMailboxDatabase)
    {
    
    if ($debug -eq $true)
    	{
    	Write-Host "move-dominomailbox -sourceidentity $dominouserCN -GlobalCatalog $globalcatalog -TargetMailboxDatabase $TargetMailboxDatabase -TargetClientAccessServer $TargetClientAccessServer -Quiet -DominoDirectoryServer $UsermailServer -TargetMode 'Merge'"
    	}
    	else
    	{
    	trap { Write-Host "Erreur fatale" ; break}
    	
        move-dominomailbox -sourceidentity  $dominouserCN -GlobalCatalog $globalcatalog -TargetMailboxDatabase $TargetMailboxDatabase -TargetClientAccessServer $TargetClientAccessServer -Quiet -DominoDirectoryServer $UsermailServer -TargetMode 'Merge'        
        
    	#Test Trap avec Division par 0 => OK
    	#1/$null  
    	#$error[0].Exception | get-member
    	
    	$script:log += "OK " + $carsep + "Compte migré"
    	}
    }
    Si je laisse tel quel il ne se passe rien alors que j'ai bien un erreur qui remonte dans la console.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 5
    Par défaut
    Au fait j'ai oublier de dire que j'ai essayer:
    trap [Microsoft.Exchange.Transporter.TransporterException]
    mais sans succés.

  5. #5
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par arthdji
    Donc si je comprends bien il n'y a pas de raison pour que ça ne marche pas.
    ...
    Si je laisse tel quel il ne se passe rien alors que j'ai bien un erreur qui remonte dans la console.
    Dans ce cas il ne s'agit pas d'exception, erreur bloquante, mais d'erreur non-bloquante, le script continue son exécution bien que la console affiche une erreur. Il doit s'agir d'une itération dans ce cas le traitement continu.
    Vérifie si les paramètres ErrorAction et ErrorVariable sont implémentés sur ton cmdlet Move-DominoMailBox, je ne me souviens plus s'ils le sont par défaut.

    Dans ce cas essaie qq chose comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ErrorsMail=$null
    Move-DominoMailBox ... -ea 0 -ev +ErrorsMail
    Une autre approche avec la variable $ErrorActionPreference="Stop".
    Voir aussi http://blogs.msdn.com/powershell/archive/2006/04/25/583241.aspx

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 5
    Par défaut
    Merci Laurent.
    J'ai essayé ta commande, ca marche bien, j'arrive à récupérer l'erreur dans la variable $errorsmail[0].
    Du coup , j'ai enlevé le trap et je fais vérifie apres ma commande si la variable est toujours à NULL.

    Donc si je comprends bien le trap ne fonctionne que dans le cas d'erreur bloquante.

  7. #7
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par arthdji
    Donc si je comprends bien le trap ne fonctionne que dans le cas d'erreur bloquante.
    Oui, erreur bloquante= exception d'où l'usage du trap sinon c'est un message d'erreur informatif.
    Par exemple avec WMI ou encore avec le cmdlet Stop-Service tu as ce type d'erreur non bloquante mais aussi des warnings, enfin selon les cas. Ce qui fait que le traitement ne s'arrête pas au premier service "en erreur".

    Mais sous PowerShell je ne trouve pas la gestion des erreurs très intuitive, la version 2 de PS implémentera le mécanisme Try-Catch-Finally.

Discussions similaires

  1. [JUnit] help sur les tests unitaires jUnit FAILED
    Par cascadox dans le forum Tests et Performance
    Réponses: 0
    Dernier message: 21/05/2011, 21h28
  2. Action simple sur les boutons.. HELP
    Par Oussama_Gabes dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 10/04/2008, 01h21
  3. Réponses: 4
    Dernier message: 13/04/2007, 17h32
  4. Help sur les services Internet
    Par kouky dans le forum Dépannage et Assistance
    Réponses: 3
    Dernier message: 12/12/2006, 14h39
  5. Help!! Probleme avec les dates sur SQL SERVER
    Par Nadaa dans le forum MS SQL Server
    Réponses: 16
    Dernier message: 03/08/2006, 16h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo