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ウィンドウのサイズを設定する方法はありますか?
あなたはすでに正しい方向に進んでいました。
(Get-Host).UI.RawUI.MaxWindowSize
またはより具体的に:
$height = (Get-Host).UI.RawUI.MaxWindowSize.Height
$width = (Get-Host).UI.RawUI.MaxWindowSize.Width
希望の値に設定して、エラーが発生した場合は、エラーで最大値が示されている値に設定することができます。幅は、バッファ幅と同じに設定してください
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
}
}