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 :

Try Catch ne fonctionne pas [PowerShell]


Sujet :

Scripts/Batch

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 72
    Points : 61
    Points
    61
    Par défaut Try Catch ne fonctionne pas
    Bonjour

    J’essaie de faire un script pour installer le rôle DHCP.
    Dans un 1er temps cela a fonctionné mais j'ai voulu ajouter une gestion d'erreur au cas ou le role dhcp est installé.

    Dans mon code ci-dessous j'importe des options à ajouter à mon DHCP.
    Problème si l'option n'existe pas, une erreur ce déclenche mais c'est le code du bloc try qui est exécute au lieu du bloc catch.

    Je n'arrive vraiment pas a comprendre pourquoi.
    Merci de votre aide

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    #Trouver l'emplacement du script
    $RootFolder = [System.IO.Path]::GetDirectoryName($MyInvocation.MyCommand.Definition)
    
    #Definition de l'emplacement des fichiers de parmetrage
    $InstallFolder = Get-Item $RootFolder\Install
    
    #Test de l'existance du dossier
    if (Test-Path $InstallFolder\Options.csv) {
    	$Options = Import-Csv -Path $InstallFolder\Options.csv -Delimiter ";"
    } Else {
    	Write-Warning "Fichier Options.csv manqant."
    	Pause
    	Exit
    }
    
    Foreach ($Option in $Options) {
    	
    	If ($Option.ScopeId -eq "" -or $Option.ScopeId -eq $null ) {
    		Try {
    			Write-Host "Option $((Get-DhcpServerv4OptionValue -OptionId $($Option.OptionId)).OptionId) déjà paramétré sur le serveur."
    		} Catch {
    			#Ajout d'option serveur
    			Set-DhcpServerv4OptionValue -OptionId $Option.OptionId -Value $Option.Value -Force
    		}
    	} Else {
    		Try {
    			Write-Host "Option $((Get-DhcpServerv4OptionValue -OptionId $($Option.OptionId) -ScopeId $Option.ScopeId).OptionId) déjà paramétré sur étendu $($Option.ScopeId)."
    		} Catch {
    			#Ajout d'option à une étendu
    			Write-Host "-OptionId $($Option.OptionId) -Value $($Option.Value) -ScopeId $($Option.ScopeId) -Force"
    			Set-DhcpServerv4OptionValue -OptionId $Option.OptionId -Value $Option.Value -ScopeId $Option.ScopeId -Force
    		}
    	}
    }

  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
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Le cmdlet émet peut être une erreur (Write-Error) et pas une exception (Throw), vérifie en ajoutant -EA Stop sur la ligne d'appel du cmdlet.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 72
    Points : 61
    Points
    61
    Par défaut
    Désolé pour le retour tardif et Merci pour la réponse.

    j'ai contourné le problème en inversant mes blocs de code.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Try {
    
    #Ajout d'option serveur
    Set-DhcpServerv4OptionValue -OptionId $Option.OptionId -Value $Option.Value -Force
    } Catch {
    Write-Warning "Option $((Get-DhcpServerv4OptionValue -OptionId $($Option.OptionId)).OptionId) déjà paramétré sur le serveur."
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AJAX] Tri tablesorter ne fonctionne pas
    Par Midsou dans le forum jQuery
    Réponses: 1
    Dernier message: 28/01/2017, 15h19
  2. le bloc try catch n'est pas accepté
    Par JeanNoel53 dans le forum C++/CLI
    Réponses: 3
    Dernier message: 11/02/2016, 14h59
  3. Pourquoi mon TRY..EXCEPT ne fonctionne pas ?
    Par clavier12AZQSWX dans le forum Général Python
    Réponses: 5
    Dernier message: 30/01/2014, 18h28
  4. [XL-2007] Tri alphabétique ne fonctionne pas
    Par pastis.vi dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 08/07/2013, 11h47
  5. [SQL2005] TRY-CATCH ne passe pas le contrôle au CATCH ?
    Par elsuket dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 22/10/2008, 14h06

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