2016-08-17 2 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에 대한 테스트가 확실히 좋았지 만 도움이되지 못했습니다. –