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.