Поскольку настройка $host.UI.RawUI.BufferSize
влияет на буфер его экрана консоли, ( Командная строка -> Свойства -> Макет -> Размер экранного буфера изменяется при изменении $host.UI.RawUI.BufferSize
), он имеет тот же ограничения на его размер буфера в качестве экрана консоли.
Как мы можем прочитать здесь , указанные размеры для размера буфера не могут быть меньше минимального размера, разрешенного системой. Этот минимум зависит от текущего размера шрифта для консоли (выбранного пользователем) и значений SM_CXMIN и SM_CYMIN, возвращаемых функцией GetSystemMetrics .
Одним из следствий этого является то, что чем больше шрифт экрана консоли, тем меньше размер буфера.
В качестве примера: вот как получить минимальную ширину экрана консоли. Я P / Вызываю функцию GetSystemMetrics из User32.dll, используя эту расширенную функцию (New-PInvoke от Joel Bennett).
$SM_CXMIN =28 # "The minimum width of a window, in pixels." enum value
New-PInvoke -Library User32.dll -Signature "int GetSystemMetrics(uint Metric)"
GetSystemMetrics $SM_CXMIN # returns 132 on my system
Чтобы получить размер шрифта, используемого буфером экрана консоли, попробуйте GetConsoleFontSize из kernel32.dll.
Примечание:
Значение, возвращаемое GetSystemMetrics $ SM_CXMIN, представляет собой общую ширину (включая границы) экрана консоли.