powershell - 如何在powershell中测量窗口高度(行数)?

标签 powershell powershell-ise windows-console

比如下图,我的环境最大行数是47。
我可以以编程方式测量这个值吗?

最佳答案

补充 Christian.K's helpful answer :

  • 获取宿主对象的一种更简单且稍微更有效的方法是 使用 $Host automatic variable 而不是 Get-Host cmdlet。
  • 您只能保证 可以访问 PowerShell 控制台主机 中的窗口大小信息 ,即当 在控制台(终端)窗口 中运行时
  • 是否公开此信息由给定的主机自行决定,正如 Christian 所说, PowerShell ISE 不会 - 即使可以说它应该,因为它有一个内置的控制台子系统。
  • 测试您的代码是否在控制台(又名终端)中运行,请使用
    $Host.UI.SupportsVirtualTerminal - $True 表示主机是控制台。


  • 如果在 PowerShell 控制台主机 中运行:

    可以访问控制台的属性 或者:
  • 通过 $Host.UI.RawUI (如 Christian 的回答),这是一个 [System.Management.Automation.Internal.Host.InternalHostRawUserInterface] 类型的对象 - 仅在 PowerShell 控制台主机中 - 包装 .NET [Console] 类(见下文)。
  • 通过 .NET [Console] class ;例如,要以这种方式获取窗口高度(行数),请使用:
  • [Console]::WindowHeight
  • $Host.UI.RawUI 输出示例:
    > $Host.UI.RawUI
    
    ForegroundColor       : DarkYellow
    BackgroundColor       : DarkMagenta
    CursorPosition        : 0,58
    WindowPosition        : 0,0
    CursorSize            : 25
    BufferSize            : 160,9999
    WindowSize            : 160,75
    MaxWindowSize         : 160,94
    MaxPhysicalWindowSize : 303,94
    KeyAvailable          : True
    WindowTitle           : Windows PowerShell
    

    如果在 PowerShell ISE 中运行:

    编写自 PowerShell 版本 5.1

    $Host.UI.RawUI 中的大多数属性都没有填充 并将返回其数据类型的默认值:
    > $Host.UI.RawUI  # in ISE
    
    ForegroundColor       : -1
    BackgroundColor       : -1
    CursorPosition        : 0,0
    WindowPosition        : 
    CursorSize            : 
    BufferSize            : 166,0
    WindowSize            : 
    MaxWindowSize         : 
    MaxPhysicalWindowSize : 
    KeyAvailable          : 
    WindowTitle           : Windows PowerShell ISE
    

    唯一可用的大小相关信息 缓冲区宽度 (上面示例输出中的 166)。

    请注意,如果您尝试直接从 ISE 使用 [Console],则会出现异常:
    > [Console]::WindowHeight
    The handle is invalid.     # EXCEPTION
    ...
    

    关于powershell - 如何在powershell中测量窗口高度(行数)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44871264/

    相关文章:

    powershell - Add-Type -ReferencedAssemblies失败,无法加载或找到程序集。解

    powershell - Docker Run 命令挂起

    powershell - 如何导入CSV文件中每行的前两个值电源外壳

    windows - 删除除一个目录外的所有文件和目录

    batch-file - 使用 "rmdir"功能但保留指定目录

    powershell Rename-Item 无法重命名

    java - 如何在Linux操作系统中从Java调用 "Powershell script file"

    具有智能感知功能的 Powershell 编辑器可以嵌入到我的程序中吗?

    windows - 如何设置依赖于另一个的环境变量? ( Windows )

    powershell - 使用 PowerShell 向服务添加凭据