I’m looking at building some Powershell scripts that can accept user input to perform different tasks with a wizard style interface. As it happens this is fairly easily achieved with the Read-Host cmdlet. Here’s a quick script showing how such a powershell script may look.

function mainMenu()
{
	Clear-Host;
	Write-Host "============";
	Write-Host "= MAINMENU =";
	Write-Host "============";
	Write-Host "1. Press '1' for this option";
	Write-Host "2. Press '2' for this option";
	Write-Host "3. Press '3' for this option";
	Write-Host "4. Press '4' for this option";
}

function returnMenu($option)
{
	Clear-Host;
	Write-Host "You chose option $option";
	Write-Host "Press any key to return to the main menu.";
	$host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown");
}

do
{
	mainMenu;
	$input = Read-Host "Enter a number for an option or type `"quit`" to finish."
	switch ($input)
	{
		"1"
		{
			returnMenu $input;
		}
		"2"
		{
			returnMenu $input;
		}
		"3"
		{
			returnMenu $input;
		}
		"4"
		{
			returnMenu $input;
		}
		"quit"
		{
			# nothing
		}
		default
		{
			Clear-Host;
			Write-Host "Invalid input. Please enter a valid option. Press any key to continue.";
			$host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown");
		}
	}

} until ($input -eq "quit");

Clear-Host;

powershell console input menu

powershell console input menu 1