Skip to content

Instantly share code, notes, and snippets.

@nord-
Created April 18, 2024 12:33
Show Gist options
  • Save nord-/4b64f8a2a9ee5e5e8fba89782f881779 to your computer and use it in GitHub Desktop.
Save nord-/4b64f8a2a9ee5e5e8fba89782f881779 to your computer and use it in GitHub Desktop.
Pause/Press any key to continue functionality in PowerShell
Function Pause ($Message = "Press any key to continue…") {
    If ($psISE) {
        # The "ReadKey" functionality is not supported in Windows PowerShell ISE.
 
        $Shell = New-Object -ComObject "WScript.Shell"
        $Button = $Shell.Popup("Click OK to continue.", 0, "Script Paused", 0)
 
        Return
    }
 
    Write-Host -NoNewline $Message
 
    $Ignore =
        16,  # Shift (left or right)
        17,  # Ctrl (left or right)
        18,  # Alt (left or right)
        20,  # Caps lock
        91,  # Windows key (left)
        92,  # Windows key (right)
        93,  # Menu key
        144, # Num lock
        145, # Scroll lock
        166, # Back
        167, # Forward
        168, # Refresh
        169, # Stop
        170, # Search
        171, # Favorites
        172, # Start/Home
        173, # Mute
        174, # Volume Down
        175, # Volume Up
        176, # Next Track
        177, # Previous Track
        178, # Stop Media
        179, # Play
        180, # Mail
        181, # Select Media
        182, # Application 1
        183  # Application 2
 
    While ($KeyInfo.VirtualKeyCode -Eq $Null -Or $Ignore -Contains $KeyInfo.VirtualKeyCode) {
        $KeyInfo = $Host.UI.RawUI.ReadKey("NoEcho, IncludeKeyDown")
    }
 
    Write-Host
}
@nord-
Copy link
Author

nord- commented Apr 18, 2024

Usage from another script:

Import-Module …\Pause.psm1
Write-Host "Hello world!"
pause

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment