PowerShell:CLI中的页眉,页脚和/或框架

时间:2012-05-02 16:29:03

标签: powershell header footer frames

在通过命令行界面运行一系列脚本时,是否有一种方法可以在正文滚动当前正在运行的脚本的详细反馈时添加页眉和页脚?

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

任何想法,如果有这样的想法存在吗?

1 个答案:

答案 0 :(得分: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属性,将页脚设置在窗口底部附近。请记住,默认情况下,如果有大量输出,文本将滚动 - 这将包括滚动屏幕的旧版本页脚。