2016-08-17 83 views
2

私は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ウィンドウのサイズを設定する方法はありますか?

+0

'.UI.RawUI.MaxWindowSize'(ホストを取得しますか)? –

+0

ありがとうオースティン、それは私に最大値を与えた – Krishna

+1

@ user2344145オースティンのフランス語の答えを受け入れる必要がありますこれを行う最も正しい方法は –

答えて

6

あなたはすでに正しいコースにいました。

(get-host).UI.RawUI.MaxWindowSize 

以上、特に:

$height = (get-host).UI.RawUI.MaxWindowSize.Height 
$width = (get-host).UI.RawUI.MaxWindowSize.Width 
+0

ありがとうございました。私はこのようにして、余分なロジックをする必要はありません。 – Krishna

3

これを目的の値に設定してから、エラーが発生した場合は、最大値のエラー状態に設定してください。幅については、バッファ幅と同じに設定してください。

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 
    } 
} 
+1

Ew、猫の肌を長くするのは難しい? –

+2

MaxWindowSizeに対するテストは間違いなく良いですが、私は自分自身を助けることができませんでした –

関連する問題