Подтвердить что ты не робот

Нажмите любую клавишу для продолжения

В соответствии с Microsoft документация, read-host позволяет пользователю ввести некоторый ввод, а затем нажмите клавишу ввода для продолжения. Не совсем правильное поведение, если вы хотите, чтобы "нажмите любую клавишу, чтобы продолжить". (Подождите... где клавиша Any?!)

Есть ли способ сделать это? Что-то вроде read-char?

Я пробовал искать "одиночный ввод символов" и "вкладка powershell", чтобы узнать, могу ли я найти список всех способов ввода данных без большой удачи. И несколько вопросов, которые выглядели надежно, используют read-host, который фактически не работает для функциональности "нажмите любую клавишу...".

4b9b3361

Ответ 1

Вот что я использую.

Write-Host -NoNewLine 'Press any key to continue...';
$null = $Host.UI.RawUI.ReadKey('NoEcho,IncludeKeyDown');

Ответ 2

Я создал небольшую функцию Powershell для эмуляции MSDOS pause. Это управляет запуском PowerShell ISE или не ISE. (ReadKey не работает в powershell ISE). При запуске PowerShell ISE эта функция открывает Windows MessageBox. Иногда это может сбивать с толку, потому что MessageBox не всегда выходит на первый план. Во всяком случае, вот оно:

Использование: pause "Press any key to continue"

Определение функции:

Function pause ($message)
{
    # Check if running Powershell ISE
    if ($psISE)
    {
        Add-Type -AssemblyName System.Windows.Forms
        [System.Windows.Forms.MessageBox]::Show("$message")
    }
    else
    {
        Write-Host "$message" -ForegroundColor Yellow
        $x = $host.ui.RawUI.ReadKey("NoEcho,IncludeKeyDown")
    }
}