4

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

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

如果有类似的东西存在,有什么想法吗?

4

1 回答 1

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属性的功能。这又是一种 hack,因为您将覆盖将滚动的输出,但如果您的脚本输出有限 - 这可能有效:

$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属性以将页脚设置在窗口底部附近。请记住,默认情况下,如果有很多输出,文本将滚动 - 这将包括旧版本的页脚也向上滚动屏幕。

于 2012-05-03T19:36:08.303 回答