PowerShell でコマンドプロンプトの Pause コマンドっぽいヤツ

PowerShell には、Windows コマンドプロンプトにおける Pause コマンドに相当するコマンドレットがパッと見存在しない。

調べてみたところ、ちょっと面倒くさい書き方をしないといけないようだ。

超お手軽バージョン

Read-Host "続けるには Enter キーを押してください..."

これなら1行、何をしている行かも分かりやすい。ただし、Enter キー以外では続行できない。

関数を定義するバージョン

function Pause() {
  Write-Host "続行するには何かキーを押してください..." -NoNewLine
  [Console]::ReadKey() | Out-Null
}

# 呼び出し時は以下のように。
Pause

一番コマンドっぽく書けるが、関数定義が必要。また、PowerShell ISE ではエラーになってしまうようだ。

別のやり方

Write-Host "続行するには何かキーを押してください..."
$host.UI.RawUI.ReadKey()

こう書いても良い。Out-Null など処理に直接関係のない記述が登場しないので多少分かりやすいだろうか。