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

다음 명령을 사용하여 기본 셸로 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 자체에 해당하는 것은 무엇입니까?



답변

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);


답변