PowerShell中的窗口大小

Kri*_*hna 6 powershell powershell-3.0

我正在尝试使用PowerShell脚本设置PowerShell窗口的大小.我正在使用的代码是

$pshost = Get-Host

$psWindow = $pshost.UI.RawUI

$newSize =$psWindow.BufferSize

$newSize.Height = 4000
$newSize.Width = 200

$psWindow.BufferSize = $newSize

$newSize = $psWindow.WindowSize
$newSize.Height = 95
$newSize.Width = 150

$psWindow.WindowSize= $newSize
Run Code Online (Sandbox Code Playgroud)

它在大多数情况下工作正常,但有时我会在某些桌面大小上出错.例如,我尝试使用95并因以下错误而失败,我的桌面屏幕大小为1440x960.

Exception setting "WindowSize": "Window cannot be taller than 82.
Parameter name: value.Height
Actual value was 95."
At line:1 char:5
+     $psWindow.WindowSize= $newSize
+     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [], SetValueInvocationException
    + FullyQualifiedErrorId : ExceptionWhenSetting
Run Code Online (Sandbox Code Playgroud)

有没有办法可以计算运行脚本的机器上的最大窗口大小设置并设置PowerShell窗口的大小?

Aus*_*nch 11

你已经在正确的课程.

(Get-Host).UI.RawUI.MaxWindowSize
Run Code Online (Sandbox Code Playgroud)

或者更具体地说:

$height = (Get-Host).UI.RawUI.MaxWindowSize.Height
$width = (Get-Host).UI.RawUI.MaxWindowSize.Width
Run Code Online (Sandbox Code Playgroud)


Mat*_*sen 5

您可以尝试将其设置为所需的值,然后在出现错误时将其设置为错误状态下的最大值。对于宽度,将其设置为与缓冲区宽度相同

function Set-ConsoleWindow
{
    param(
        [int]$Width,
        [int]$Height
    )

    $WindowSize = $Host.UI.RawUI.WindowSize
    $WindowSize.Width  = [Math]::Min($Width, $Host.UI.RawUI.BufferSize.Width)
    $WindowSize.Height = $Height

    try{
        $Host.UI.RawUI.WindowSize = $WindowSize
    }
    catch [System.Management.Automation.SetValueInvocationException] {
        $Maxvalue = ($_.Exception.Message |Select-String "\d+").Matches[0].Value
        $WindowSize.Height = $Maxvalue
        $Host.UI.RawUI.WindowSize = $WindowSize
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 呃,剥猫皮的漫长而艰难的过程? (2认同)
  • 针对 MaxWindowSize 进行测试肯定更好,但我无法控制自己 (2认同)