42 votes

Est-il possible de forcer le script PowerShell à générer une erreur si un paramètre requis est omis ?

Je voudrais que le deuxième appel de fonction dans ce script lance une erreur :

function Deploy
{

param(

    [Parameter(Mandatory=$true)]
    [ValidateNotNullOrEmpty()]
    [string]$BuildName

    )
    Write-Host "Nom du build est : $BuildName"

}

Deploy "Build123"

Deploy #Actuellement demande une entrée

Demander une entrée est parfait pour utiliser le script de manière interactive, mais cela sera également exécuté par notre serveur de build.

Ma meilleure option est-elle simplement de faire une validation personnalisée avec un if ou quelque chose ?

56voto

Shay Levy Points 41404

Une fois que le paramètre est marqué comme obligatoire, PowerShell demandera une valeur. Cela dit, si vous supprimez l'attribut obligatoire, vous pouvez définir une valeur par défaut avec une instruction throw :

function Deploy
{
    param(
        [Parameter()]
        [ValidateNotNullOrEmpty()]
        [string]$BuildName=$(throw "BuildName est obligatoire, veuillez fournir une valeur.")
    )

    Write-Host "Le nom de la construction est : $BuildName"
}

36voto

ohw Points 1560

@Empereur XLII a un commentaire intéressant dans la question que je pense peut être une meilleure réponse pour certains cas d'utilisation :

si vous exécutez powershell.exe avec le drapeau -NonInteractive, l'absence de paramètres obligatoires provoquera une erreur et entraînera un code de sortie non nul pour le processus.

Les raisons d'utiliser cela peuvent être :

  1. Vous avez beaucoup de ces paramètres Mandatory=$true et le coût est élevé pour les convertir tous.
  2. Le script sera utilisé de manière interactive et non interactive, et lors de son exécution de manière interactive, vous souhaitez être invité pour les paramètres manquants.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X