web-dev-qa-db-ja.com

PowerShellのウィンドウサイズ

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

ほとんどの場合は正常に機能しますが、特定のデスクトップサイズでエラーが発生することがあります。たとえば、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

スクリプトを実行しているマシンの最大ウィンドウサイズ設定を計算し、PowerShellウィンドウのサイズを設定する方法はありますか?

6
Krishna

あなたはすでに正しい方向に進んでいました。

(Get-Host).UI.RawUI.MaxWindowSize

またはより具体的に:

$height = (Get-Host).UI.RawUI.MaxWindowSize.Height
$width = (Get-Host).UI.RawUI.MaxWindowSize.Width
13
Austin T French

希望の値に設定して、エラーが発生した場合は、エラーで最大値が示されている値に設定することができます。幅は、バッファ幅と同じに設定してください

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
    }
}
3