2012-05-02 28 views
2

在通过命令行界面运行一系列脚本时,是否有方法在正文滚动当前正在运行的脚本的详细反馈时添加页眉和页脚?PowerShell:CLI中的页眉,页脚和/或框架

标题将包含有关当前正在运行的脚本的信息。页脚会向用户提供有关控制某些脚本以及如何暂停或停止脚本的信息。

任何想法,如果有什么喜欢这个存在?

+0

如果头文件应该包含进度信息,可以看一下Write-Progress cmdlet([Scott Hanselman](http://www.hanselman.com/blog/ProgressBarsInPowerShell.aspx)有很好的例子) – jumbo

+0

这看起来很有趣,可能是一个解决方案。我会玩。仍然希望更接近实际的页眉和页脚。谢谢。 – Vippy

回答

3

你可以改变窗口标题,这可能发挥作用有点像一个头 - 尽管我不知道这是否会给你你正在寻找什么:

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

的建议通过jumbo到使用Write-Progress cmdlet大概和纯粹的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); 
} 

而不是写入控制台,你或许会转储输出到一个TextBox或更合适些。

最后一个选项是使用控制台设置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