【问题标题】:PowerShell: Headers, Footers and/or Frames in CLIPowerShell:CLI 中的页眉、页脚和/或框架
【发布时间】:2012-05-05 11:22:36
【问题描述】:

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

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

如果存在类似的任何想法?

【问题讨论】:

  • 如果标题应该包含进度信息,请查看 Write-Progress cmdlet(Scott Hanselman 有很好的使用示例)
  • 这看起来很有趣,可能是一个解决方案。我会玩那个。仍然希望有更接近实际页眉和页脚的东西。谢谢。

标签: powershell header footer frames


【解决方案1】:

您可以更改窗口标题,它的功能类似于标题 - 虽然我不知道它是否会提供您正在寻找的内容:

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

【讨论】:

  • 我想这与我可以获得的纯 PowerShell 解决方案一样接近。感谢您的建议。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-26
  • 2020-11-30
  • 2011-08-17
相关资源
最近更新 更多