RSS

[Powershell] Fonction Question/Réponse booléenne

décembre 06, 2013

Voici une fonction Powershell qui vous permet de poser une question à l’utilisateur du script afin d’obtenir une réponse booléenne à cette dernière. Cela afin de valider un choix, un statut, une action, etc …

Function Get-BoolChoice
{
    <# .SYNOPSIS        
              Function to get the boolean choice of the user about a question            
          .DESCRIPTION
              This function ask the question to the user and wait the choice of the user between 'y' ($true) and 'n' ($false). 
              When the user choices a right option, the function returns the boolean choice : True ($true) if it is 'y', False ($false) if it is 'n'
          .EXAMPLE 
              Get-BoolChoice("Do you want to continue [y/n] ?")
          .PARAMETER
              question The question asked to the user
              defaultValue The default value used if the user type 'Enter' without any other character (Range values are [yYnN])
          .OUTPUTS 
              System.Boolean. Get-BoolChoice return the bool equivalent of the user choice. True ($true) if the user choice 'y', otherwise False ($false) 
    #>;
    [CmdletBinding()]
    param (
        [Parameter(Mandatory=$True, HelpMessage='What is the question you want to ask ?')]
        [string]$question,
        [Parameter(Mandatory=$False, HelpMessage='What is the default value if user just hit Enter ?')]
        [ValidatePattern("[ynYN]")]
        [string]$defaultValue
    )

    begin {
    }

    process {
        $boolChoicesArr = "y","n"
        do
        {
            if(!($defaultValue -eq "")){
                $boolChoice = Read-Host -Prompt ("{0} [y/n] {1}" -f $question, " (default '{0}')" -f $defaultValue)
            } else {
                $boolChoice = Read-Host -Prompt ("{0} [y/n]" -f $question)
            }

        }
        until(($boolChoicesArr -contains $boolChoice) -or (($boolChoice -eq "") -and !($defaultValue -eq "")))

        Write-Verbose ("The bool choice : {0}" -f $boolChoice)

        return ($boolChoice -eq 'y') -or ($boolChoice -eq "" -and $defaultValue -eq 'y')
    }
}

J’espère que cela vous aidera dans vos développement de scripts Powershell

 

Posted by on 6 décembre 2013 in Codes, Powershell

Leave a comment

Tags: ,

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *