Powershell 글꼴 얼굴 및 크기 사용자 정의


10

다음 명령을 사용하여 기본 셸로 powershell을 설정 한 여러 Windows 2012 서버 코어 시스템이 있습니다.

$RegPath = "Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\winlogon"
Set-ItemProperty -Confirm  -Path $RegPath -Name Shell -Value 'cmd.exe /C start /max PowerShell.exe -noExit'

c : \ Windows \ System32 \ WindowsPowerShell \ v1.0 \ profile.ps1에서 특별한 powershell 스크립트를 사용하여 powershell 글꼴 색상을 사용자 지정할 수 있다는 것을 알았습니다. 이 스크립트는 모든 사용자가 사용합니다.

그러나 이제는 영구적 인 글꼴 얼굴 및 글꼴 크기 (모든 사용자에게도)를 사용자 정의하려고합니다. IE 서버에서 로그 아웃했다가 다시 로그인하면 설정이 유지되기를 원합니다. 마찬가지로 관리자로 로그인하거나 내 계정 powershell이 ​​동일하게 표시되어야합니다. 동일한 글꼴 색상, 글꼴 및 글꼴 크기를 사용하십시오.

Powershell ISE를 사용하면 다음을 사용하여 글꼴 및 글꼴 크기를 설정할 수 있습니다.

$psISE.Options.FontName = 'Lucida Sans Console' 
$psISE.Options.FontSize = 14

powershell 자체에 해당하는 것은 무엇입니까?

답변:


4

ISE가 아닌 Powershell은 "콘솔 호스트"를 사용합니다.이 콘솔은 고대 MS-DOS 명령 프롬프트 를 약간 더 현대적으로 업데이트 한 것 입니다. 콘솔 호스트는 Microsoft가 명령 프롬프트를 최신 버전의 Windows와 호환되도록 유지하면서도 이전 콘솔 앱과도 호환되도록하는 방법입니다.

Powershell.exe를 시작하면 csrss.exe가 conhost.exe라는 하위 프로세스를 생성합니다. 이 동작은 Cmd.exe를 시작할 때와 동일합니다.

그러나 이전 콘솔 앱과의 호환성을 유지해야했기 때문에 모양과 느낌을 너무 많이 바꾸거나 내부 인터페이스를 변경하거나 중단 할 수 없었습니다.

불가능하다고는 말하지 않겠지 만 생각보다 어렵습니다.

에 아무것도 없습니다 (Get-Host).UI.RawUI. System.Console.NET 클래스 에는 아무것도 없습니다 .

다음과 같은 방법으로 레지스트리에서 글꼴 모양과 크기를 변경할 수 있습니다.

(편집 : 밑줄이 슬래시가 아님)

Set-Location HKCU:\Console
New-Item '.\%SystemRoot%_System32_WindowsPowerShell_v1.0_powershell.exe'
Set-Location '.\%SystemRoot%_System32_WindowsPowerShell_v1.0_powershell.exe'

New-ItemProperty . FaceName -type STRING -value "Lucida Console"
New-ItemProperty . FontFamily -type DWORD -value 0x00000036
New-ItemProperty . FontSize -type DWORD -value 0x000c0000
New-ItemProperty . FontWeight -type DWORD -value 0x00000190

kernel32.dll에는 글꼴을 변경하는 여러 가지 내보내기가 있습니다.

typedef struct _CONSOLE_FONT {

   DWORD index;

   COORD dim;

} CONSOLE_FONT; 

BOOL WINAPI SetConsoleFont(HANDLE hOutput, DWORD fontIndex);
BOOL WINAPI GetConsoleFontInfo(HANDLE hOutput, BOOL bMaximize, DWORD numFonts, CONSOLE_FONT* info);
DWORD WINAPI GetNumberOfConsoleFonts();
BOOL WINAPI SetConsoleIcon(HICON hIcon);

레지스트리를 통해 글꼴을 변경하기 위해 위의 코드를 사용하려고했지만 아무것도하지 않은 것 같습니다. 설정을 적용하려면 무엇이 필요합니까?
Brad

올바른 레지스트리 키 (적어도 Windows Server 2012의 경우)는 약간 다릅니다. 코드가 실행되는 것처럼 보이지만 글꼴이 powershell 콘솔을 변경하지 않습니다.
Brad

이 모듈을 사용하면 : gallery.technet.microsoft.com/scriptcenter/… 글꼴을 변경할 수 있었지만 옵션이 매우 제한적인 것 같습니다. 실제로 사용 가능한 글꼴이 왜곡되거나 너무 크거나 작습니다. 다른 글꼴 크기를 선택하는 방법을 알아 내려고합니다.
Brad

1
그렇다, 내가 쓴 사람은 내가 이야기하고있는 kernel32.dll에서 그 내보내기를 PInvoking입니다. 그리고 예, 옵션은 상당히 제한적입니다. 따라서 GUI를 통해 콘솔 앱의 글꼴을 변경할 때 3 가지 글꼴 만 선택할 수 있습니다. Powershell을 포함하여 콘솔 앱에 Comic Sans를 사용할 수 없습니다. 그 사람의 대본에서 그는 글꼴을로 설정합니다 Set-ConsoleFont 28. 각 글꼴 번호는 미리 정해진 높이와 너비를 갖습니다. GUI에서 변경할 때와 같습니다.
Ryan Ries

서체와 크기를 변경하는 것 (초보적인 변경이라고 가정)과 같은 단순한 것은 거의 불가능하거나 (적어도 매우 어렵거나 매우 제한된 옵션으로) 가능합니다. 그래서 우리는 글꼴 크기에 갇혀 있다고 생각합니다. Microsoft 덕분에 삐걱 거리지 않습니다.
Brad
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.