ちょっと今Out-Defaultの内部動作について調べてて、その最中に気が付いたことについてのメモになります。
Out-Hostの-Pagingパラメーター
Out-Hostコマンドレットの-Pagingパラメーターを使うと以下の様に1ページ、または1行ずつコンソールの表示を進めてくれる様になります。
要はPowerShell版のmoreコマンドです。

PowerShellでのmoreコマンド
ただこのOut-Host -Paging、PowerShellでも普通にmoreコマンドは使えますしタイピングも面倒なので正直使いどころが無いと思います。実際私は全く使いません。
とはいえこんなパラメーターをわざわざ作ったという事は、もしかしたらmoreコマンドはOut-Host -Pagingのエイリアスにでもなってるのではないかと思い少し調べてみました。
すると、
# Windows 10(PowerShell 5.0)での結果。 # PowerShell 2.0以降であれば同様の結果となります。 PS C:\> Get-Command more | fl Name : more CommandType : Function Definition : param([string[]]$paths) $OutputEncoding = [System.Console]::OutputEncoding if($paths) { foreach ($file in $paths) { Get-Content $file | more.com } } else { $input | more.com }
という結果が得られ、PowerShellでのmoreは(C:\WINDOWS\system32\)more.comをちょっとだけラップしたものだということがわかりました。
ここで上のコメントに
# Windows 10(PowerShell 5.0)での結果。
# PowerShell 2.0以降であれば同様の結果となります。
と入れているのは
の記事を見るとmoreファンクションはOut-Host -Pagingをラップしたものになっていたためです。
こちらの記事は2007年のものですのでPowerShell 1.0になります。
---- 2016/02/02追記 ----
PowerShell 1.0な環境を用意できたので確認してみました。
以下のコマンドで定義を取得。
Get-Command more -CommandType Function | select Definition
取得できた定義は以下。
param([string[]]$paths); if(($paths -ne $null) -and ($paths.length -ne 0)) { foreach ($local:file in $paths) { Get-Content $local:file | Out-Host -p } } else { $input | Out-Host -p }
---- 追記ここまで ----
どういった経緯があったのかはわかりませんが、PowerShell 2.0になった時点でmoreファンクションでOut-Host -Pagingを使うのを止めて単純にmore.comをラップする様になりOut-Host -Pagingは完全にいらない子扱いにされてしまった様です。
---- 2015/09/29追記 ----
補足1 Out-Host -Pagingとmoreコマンドの違いについて
補足としてOut-Host -Pagingとmoreファンクションの動作の違いについて触れておくと、moreファンクションは外部のmore.comコマンドを呼ぶ形になるのでパイプラインへの入力をすべて受けてからコマンドが実行される形になります。
このため大量データに対してはmoreの方がレスポンスタイムが悪くなりメモリの使用量が増大する事になります。
詳しい話はmore関数のレスポンスタイムを改善するを参照してください。
補足2 PowerShell ISEでのOut-Host -Pagingとmoreコマンドについて
I am having problems with the pipeline Out-Host -paging.にある様にPowerShell ISEではOut-Host -Pagingを実行するとエラーになります。
またmoreの定義も、
# PowerShell ISEで実行した結果です。 PS C:\> Get-Command more | fl Name : more CommandType : Filter Definition : $_
と、入力をすべて素通しするだけのFilterとなっています。
これは開発ツールとしてページングの処理をさせない様にしているのだと推測されます。
---- 追記ここまで ----
TODO
今回PowerShell 1.0の環境が用意できなかったのでいずれPowerShell 1.0についても実際に確認しておきたいです。
20160/02/02にPowerShell 1.0な環境で確認できました。