Utiliser l’applet de commande Read-Host dans des scripts Windows PowerShell
Vous pouvez utiliser l’applet de commande Read-Host pour solliciter une entrée de l’utilisateur pendant l’exécution d’un script. La demande d’entrée utilisateur peut être une invite à démarrer le script ou dépendre des résultats du traitement déjà effectué dans le script. Par exemple, après avoir interrogé les objets utilisateur Active Directory Domain Services (AD DS) et affiché le nombre d’objets récupérés, le script peut solliciter une décision de continuer ou d’arrêter. Le script peut aussi demander l’ID d’événement spécifique à rechercher. La syntaxe de l’applet de commande Read-Host est la suivante :
$answer = Read-Host "How many days"
L’exemple précédent arrête le traitement du script et invite l’utilisateur à répondre en lui présentant le texte suivant :
How many days:
À l’invite, l’utilisateur entre une réponse, puis il sélectionne Entrée. La réponse que l’utilisateur fournit est placée dans la variable $answer.
Quand vous présentez du texte dans le cadre de l’utilisation de Read-Host, un signe deux-points (:) est toujours ajouté à la fin du texte. Il n’existe aucun paramètre pour supprimer ce comportement. Toutefois, si vous utilisez Read-Host sans présenter de texte, aucun signe deux-points n’est affiché. Vous pouvez combiner une commande Write-Host avec Read-Host pour présenter du texte en évitant l’ajout d’un signe deux-points, comme l’illustre l’exemple suivant :
Write-Host "How many days? " -NoNewline
$answer = Read-Host
Notes
Toute entrée à partir de l’applet de commande Read-Host est limitée à 1 022 caractères.
Vous pouvez masquer les entrées effectuées par l’utilisateur à l’invite à l’aide des paramètres -MaskInput ou -AsSecureString. Ces deux paramètres entraînent l’affichage des caractères entrés par l’utilisateur sous forme d’astérisques (*). Quand vous utilisez -MaskInput, la réponse est collectée en tant qu’objet String. Quand vous utilisez -AsSecureString, la réponse est collectée en tant qu’objet SecureString. Un objet SecureString est nécessaire pour les scénarios comme la définition de mots de passe, où les données ne doivent pas être stockées sous forme de texte clair dans la mémoire.