2012-05-02 3 views
2

コマンドラインインターフェイスを使用して一連のスクリプトを実行しているときに、本体が現在実行中のスクリプトの冗長なフィードバックをスクロールしている間にヘッダーとフッターを追加する方法はありますか?PowerShell:CLIのヘッダー、フッターおよび/またはフレーム

ヘッダーには、現在実行中のスクリプトに関する情報が含まれます。フッターには、特定のスクリプトの制御に関する情報、およびスクリプトの一時停止または停止方法に関する情報が含まれています。

これが好きなアイデアはありますか?

+0

ヘッダーに進捗情報が含まれている場合は、Write-Progressコマンドレット([Scott Hanselman](http://www.hanselman.com/blog/ProgressBarsInPowerShell.aspx))を使用する方法の良い例があります。 – jumbo

+0

これは非常に面白く見え、解決策かもしれません。私はそれで遊ぶだろう。実際のヘッダーやフッターに近いものを探しています。ありがとう。 – Vippy

答えて

3

あなたは一種のヘッダのように機能することができるウィンドウのタイトルを変更することができます - それはあなたが探している正確に何を与えるかどうかは分かりませんが:

$Host.UI.RawUI.WindowTitle = "Your Custom Header" 

の提案をjumboによってWrite-Progressコマンドレットを使用することは、フッターが純粋なPowerShellで動作する限り、おそらくそれほど良いものではありません。

また、適切なヘッダー/フッターを提供するWinForms/WPFアプリケーションでPowerShellランタイムをホストすることもできますが、これは完全に過剰であり、ニーズにも合わないことがあります。過度に単純で不自然な例では、このような何かをするだろうC#である:

// include the System.Management.Automation assembly & namespace 
PowerShell ps = PowerShell.Create(); 
ps.AddCommand("Get-Process"); 
foreach (PSObject result in ps.Invoke()) { 
    Console.WriteLine(result.Members["ProcessName"].Value); 
} 

代わりのコンソールへの書き込み、あなたはおそらく、テキストボックスまたはより適切な何かに出力をダンプします。

最後のオプションは、コンソールがCursorPositionプロパティを設定する機能を使用することです。これは、あなたがすることによってスクロールされるだろう出力を上書きすることになるとして、再び種類のハックですが、スクリプトが出力を制限している場合 - これは動作可能性があります

$pos = $Host.UI.RawUI.CursorPosition 
$newPos = New-Object System.Management.Automation.Host.Coordinates 0,20 
$Host.UI.RawUI.CursorPosition = $newPos 
"Here is my footer on starting at the first character of line 20" 
$Host.UI.RawUI.CursorPosition = $pos 

あなたが動的にフッターを設定する$Host.UI.RawUI.WindowSize.Heightプロパティを検査できウィンドウの下部近くにある。古いバージョンのフッターが画面上にスクロールするだけでなく、多くの出力がある場合は、デフォルトでテキストがスクロールすることを覚えておいてください。

+0

これは私が得ることができる純粋なPowerShellソリューションに近いと思います。アドバイスをいただきありがとうございます。 – Vippy

関連する問題