2010年11月20日土曜日

◆Pauseの実装2

以前PowerShell: ◆Pauseの実装にてDOSのPauseに相当する関数を作ってみたのだが、こいつはISE環境で使うとフリーズしてしまうことが判った。
これでは何かと使いづらいのでちょっと改良してみることにした。

自動変数$ExecutionContextを使うと実行環境が判定できるのISEの場合は単純にMessageBoxを表示することとした。
function Pause
{
    if($ExecutionContext.Host.name -match "console"){
        Write-Host "続行するには何かキーを押してください . . ." -NoNewLine
        [Console]::ReadKey($true) | Out-Null
        Write-Host
    }else{   
        #Add-Type -AssemblyName System.Windows.Forms
        [WIndows.Forms.MessageBox]::Show("続行するにはOKを押してください") | Out-Null
    }
}
あとはこれをProfileの登録すれば良いのだが、ConsoleとISEの両方で使いたいので以下に登録した。
$env:windir\System32\WindowsPowerShell\v1.0\profile.ps1

<追記>
$ExecutionContext.Hostは$hostでも良さげ。

1 件のコメント:

  1. 丸パクリしました。
    ありがとうございました。

    返信削除